第八天课程 继承
1. java中的继承的好处
代码减少
继承的出现,使类与类之间,产生的了关系,正是因为这个关系的存在
就导致了面向对象的第三个特征,多态
2. java中,只支持单继承,类与类之间,不支持多继承
一个类,只能继承一个类
支持多层继承,多重继承
3. 什么时候使用继承呢
当你发现,一个事物,属于另一个事物中的一种
可以使用继承关系
继承一个事物的时候,发现这个事物中的功能,都应该具备,继承有效
继承一个事物的时候,发现这个事物中的功能,一部分具有,继承无效
实例
咖啡,酱油
共性:流动性,黑色
特性:饮料,调味品
饮料体系:
解渴,冰镇,流动,液体
副食体系:
调味道
4. 继承关系后,子类,父类中 成员变量,成员方法和构造方法的特点 ******
子类父类中成员变量的特点
新的关键字super.成员变量名,调用的父类中的成员变量
this表示本类对象的引用,super表示的父类的存储位置
建立对象的时候,父类中的成员变量,也在子类对象存储的堆中
子类有,就运行子类,子类没有,运行父类的
子类有,变量前,省去了this ,父类有,省去了super
静态变量,子类有,省去了子类类名,父类有,省去了父类类名
子类父类成员方法的特点
当子类中,和父类中出现了一模一样的方法的时候,子类重写父类方法(override)覆盖,复写
子类覆盖父类中方法的时候,必须保证权限大于或者等于父类
非静态覆盖非静态,静态覆盖静态
子类父类构造方法的特点
子类构造方法,都要去访问父类中无参数的构造方法,这是默认的
无论子类的构造方法,有几个,都会默认的访问父类空参数的构造方法
子类的构造方法之间的调用用的this,必须第一行,第一行是super还是this
只要保证子类构造方法,直接还是间接的可以访问到父类的构造方法就可以了
7 final关键字
被final修饰的方法,最终方法,不能被覆盖的
被final修饰的类,不能再派生子类 (String)
被final修饰的变量,其实是一个常量了,只能赋值一次
被final修饰的变量,变量名,全部大写,规范,不是强制
public static final int X = 10;
类中,永恒不变的数据,写成final形式:public static final double PI = 3.1415926
private static final Single s = new Single();
8 对象的多态性
我,在生活中,具备多种形态
传智,我是员工
家庭,户主
朋友,小弟
宠物猫
咪咪猫
小宠物真漂亮
老鼠面前,舞伴
现实生活中的多态:一个事物具备的多种形态
面向对象中的对象的多态
父类或者是接口的引用,指向自己的子类对象
父类 f = new 子类();
9 多态的好处和弊端
好处:代码的复用性提高,扩展性增强,后期维护性增强,代码量也减少
弊端:多态中,只能调用子父类中的公共方法,不能调换子类的特有方法
10 多态中的细节问题:
非静态成员变量的特点:
编译时期,参考引用型变量中,是否有这个变量
运行时期,参考引用型变量中的变量的值
静态成员患变量特点
编译时期,参考引用型变量中,是否有这个变量
运行时期,参考引用型变量中的变量的值
静态成员方法的特点
编译时期,参考引用型变量中,是否有这个方法
运行时期,参考引用型变量中的方法
非静态成员方法的特点
编译时期,参考引用型变量中,是否有这个方法
运行时期,参考子类对象中的方法
在编译时期,JVM静态的绑定(静态绑定:所谓静态绑定就是在程序编译时就绑定的)在父类的引用变量中
只要在非静态成员方法运行的时候,JVM动态的绑定到子类对象中
简单的说:
除了非静态成员方法以外,编译看左边,运行看左边
只有在非静态方法中,编译看左边,运行看右边
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------