2.1 static用法:
2.1.2 static的应用:
* 1.static修饰属性(静态属性):
* 加了static后,每个对象共享一份静态属性
*
* 2.static修饰代码块:
* 代码块: 只要实例化一个对象,则调用一次代码块的内容
* 静态代码块:与对象无关,属于类;无论实例化多少个对象,只加载一次
*
* 3. static修饰方法:
* 成员方法: 属于对象,通过对象.方法的方式调用
* 静态方法: 属于类,调用时推荐通过类名.方法的方式调用
*
* 总结: 被static修饰过的,都属于类;在类加载的同时将static的引用加载出来;优先于对象先出来
**
2.1.1程序解析
先新建一个GirlFrinrd类 通过对变量非静态和静态对比查看代码的运行情况。
第一个程序运行结果为:高圆圆 凤姐
第二个程序运行结果为:凤姐 凤姐
反应被static 修饰后 被Static修饰的变量变成对象共享的一个静态属性。
应用场景:
-
- 静态属性:作为状态值来使用(常用)
-
- 静态方法:作为工具类来使用: 例如数组专家(常用)
-
- 静态代码块:初始化内容,且只初始一次的情况可放在静态代码块中;(暂时不常用)
2.2 继承
2.2.1继承特性
特性1:子类继承父类,拥有父类的属性和方法; 但是父类不能调子类的方法
细节1:实例化过程,子类实例化对象后,先调用父类的构造:super()
细节2:构造方法是否具有继承性---测试: 没有
细节3: 支持多重继承;私有属性和方法不能被继承
特性2: 重写
1.使用场合:父类的方法不能满足子类需求时,子类可重写父类的方法
2.2.2继承图解
父类与子类 概念图
父子类构造流程图
继承相关问题
1. 分析子类实例化的过程
* 分析现象: 先调用父类不带参构造;再调用子类构造
* 原因: 子类构造的首句默认有super()
* super: 父类对象 this: 当前对象
* super():调父类不带参构造
* this(); 调当前类构造
*
* 2. 构造方法是否具有继承性? ---不具有继承性
* 在子类不用写构造方法,可以直接调父类的构造
* 注意: 最好测带参构造,因为不带参构造会自动生成,不方便测
*
* 3. java中是否支持多继承? 多重继承? 什么是多继承? 多重继承?
* java不支持多继承、可以支持多重继承;也就是说不能有多个父亲;但是可以有父亲、有爷爷、、、
*
* 4. 问题:
1,继承,私有的方法和变量会不会被继承? 不会
2,继承,构造方法会不会被继承? 不会
继承的另一大特性: 重写 (狠重要)
应用场景: 当父类的方法不能满足子类需求时,子类可以重写一个方法;
注意: 子类重写的方法、参数完全与父类一致
重写 VS 重载
重载: 在一个类中,方法名相同、参数个数或类型不同
重写: 在多个类中,方法名相同、参数个数和类型都完全一样
final继承
1.final修饰属性:变量变常量; 配合static使用---作为状态值
2.final修饰方法:方法不能被重写
3.final修饰类: 该类不能有子类