java基础day14---static关键字-----继承
day14
1.为什么使用static关键字修饰属性
/* 编写学生类,属性:名字,现住址(北京) */ class Student{ //构造方法 public Student(){ } public Student(String name){ this.name=name; } //属性 String name; String address="北京"; } //编写学生测试类 class StudentTest{ public static void main(String[] args){ //创建对象 Student s=new Student(); Student s2=new Student("张三"); System.out.println(Student.address);//北京 Student s=new Student(); System.out.println(s.name);//null System.out.println(s.address);//北京 s=null;//变为空值,对象变为垃圾 //System.out.println(s.name);//出现运行错误,不能访问对象中的实例变量 System.out.println(s.address); } }
//发现问题:
---多个对象中有相同值得属性,如:address="北京";
-----能否将相值得属性,在内存中只开辟一块空间,
并且所有对象都可以访问?---能
解决办法:
--将相同值得属性,存放在一个共享区(方法区)中,此时
多个对象都可以访问。
堆--栈---共享区---堆--栈
---好处:节省空间
---static String address="北京";///称为静态属性也叫做类的变量
---在方法区(共享区)中存储,并且所有对象都可以访问
---与类同生死,也就是说类在static修饰的属性就存在
---可以使用类名.属性名称;也可以使用引用名称.属性名称
---注意:当引用名称的值为null时,也可以访问静态属性,
不会出现空指针异常
---类优先于对象,也就是说类的生命周期比较长
2.static关键字修饰符方法
---称为静态方法也叫做类的方法
---与类同生死,也就是说类在static修饰的属性就存在
---可以使用类名。方法名称([参数列表]);
也可以使用引用名称.方法名称([参数列表]);
class Student{ //称为静态方法也叫做类的方法 public static void print(){ System.out.println("执行了println方法"); //System.out.println(name);//静态方法中只能访问静态属性,静态方法 } //称为非静态方法也叫做实例方法 public void show(){ System.out.println("执行了show方法"); } public Student(){ } public Student(String name){ this.name=name; } //属性 String name; String address="北京"; } //编写学生测试类 class StudentTest{ public static void main(String[] args){ Student.print(); Student s=new Student(); System.out.println(s.name);;//null s.show(); s.print(); } }
3.static修饰代码块
--- 主要完成对静态属性赋值
---静态代码块在类第一次被载入时则执行
class Student{ //静态属性代码块:完成对静态属性赋值 static{ address="北京市"; System.out.println("执行了静态代码块"); } }
4.为什么使用继承
/*
编写狗类:属性--名字、年龄、品种、颜色;方法:显示信息
编写猫类:属性--名字、颜色、性别、年龄;方法:显示信息
编写测试类:创建猫和狗的对象,并分别显示信息
分析得到:
如果多个类中有相同的属性和方法,能否单独编写一个类?----能
解决办法:
--将多个类中相同的属性和方法编写在单独一个类中,该类称为父类
--在子类继承父类,然后在子类中编写独有的属性和方法
动物类:
属性:名字、年龄、颜色
方法:显示信息
狗类 继承 动物类
独有属性:品种
猫类 继承 动物类
独有属性:性别
好处;减少代码的冗余性(重复性)
*/
5.编写继承代码步骤
---第一步:编写父类
[修饰符] class 类名{
//属性和方法
}
---第二步:编写子类
[修饰符] class 子类类名 extends 父类类名{
//编写独有属性和方法
}
---注意:当一个类没有指明继承具体哪个父类时,
则默认继承object类
object类是所有类的父类(超类)
6.继承中注意事项
--子类继承父类,但是不能继承父类的构造方法
--父类也叫做超类(基类),子类也叫做派生类
--继承具有两大特性:
**一个类只能继承一个直接的父类,也就是类的单根性
**类具有传递性
class Animal{ //属性 String name; int age; String color; //方法:显示信息 public void show(){ System.out.println("名字:"+name+"\n年龄:"+age+"\n颜色:"+color); } } //编写狗的子类继承动物父类 class Dog extends Animal{ //编写子类中独有属性和方法 String strain; } //等价于 /*class Dog extends object{ }*/ class Cat extends Animal{ //独有属性:性别 char sex; }
相关文章
- Java入门系列之包装类
- 配置Flink依赖的pom文件时报错:flink-clients_2.11 & flink-streaming-java_2.11
- 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制
- java基础—自定义一个比较器,按照字符串的长度升序的方法来比较字符串进行储存(java集合三)
- java基础—找出两个字符串中最大的子串
- 大杂烩 -- Java内存布局【图】以及java各种存储区【详解】
- Java进阶:线程池、局部变量、内部类、静态嵌套类和引用,哦,还有一个坑
- Java exercise
- 第二十八节:Java基础-进阶继承,抽象类,接口
- JAVA ZIP 处理文件
- 【Java】Eclipse如何创建java项目并运行
- Java基础语法:9. Java Number和Math类
- Java基础语法:1.第一个java程序
- 《Java 开发从入门到精通》—— 2.3 使用IDE工具序
- 《Java EE核心框架实战》—— 2.8 分页
- Java 并发工具包 java.util.concurrent 大全
- java异常的分类
- java基础的第二轮快速学习!day08
- Java_jdbc 基础笔记之十一数据库连接 (通用的查询方法)
- Java_类似java.lang.VerifyError: Expecting a stackmap frame at branch target 22 in method的解决方法
- java学习路线-Java技术人员之路从0基础到高级
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- 【历史上的今天】12 月 24 日:姚期智出生;微软在 Java 反垄断案中败诉;GIF 图像格式获得专利保护
- java解惑
- 从零学Java目录导航
- Java小白入门200例61之java中Date日期类型的大小比较
- java中如何使用Junit测试
- windows环境下一键搭建大数据开发环境,Java+hadoop+hbase+elasticsearch+apache-tomcat,对上海出租车历史数据进行了分析并做了轨迹数据可视化展现
- Java基础(业务问题)