您的位置:首页 > 编程语言 > Java开发

JAVA面向对象2-静态;继承;重写

2017-11-24 20:12 176 查看

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修饰类:  该类不能有子类


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面向对象