继承

来源:互联网 发布:明治天皇 知乎 编辑:程序博客网 时间:2024/05/21 06:53
继承
面向对象的三个特性
1.灵活性
2.复用性
3.可拓展性
不断抽取事物的共性内容,就是继承,在代码中体现就是extends
学生类--------子类
人类-----------父类 基类 超类
好处:
1、提高了代码的复用性
2、让类和类之间有了关系
对象的共性内容不断的向上抽取,形成了关系,这就是继承,然后就有了子父类


为什么java是单继承的语言
单继承:一个子类只能有一个父类
多继承:一个子类有多个父类
单继承的原因:为了防止对象在调用方法上出现不确定性
弊端:当方法不一样的时候不能同时继承,所以就有了多重继承,如果有相同的方法会复写


java是多重继承的语言,形成了继承体系
1,查阅该体系最父类的功能,能够得到该体系中共享最全面的功能
2,创建子类的对象,就可以调用多有共性的功能,同时也能调用子类的特殊功能
看父类的内容,创建子类的对象


什么时候能定义继承呢
事物之间存在所属关系的时候,才能定义继承
误区:不要仅仅为了提高复用性,就写继承关系
//当子类的属性与父类夫人属性同名时,子类的对象调用该属性时,得到的是该子类的的属性值
 super代表了父类所属的内存空间(在方法区中)、
 继承中
 当子父类中出现了一模一样的方法的时候,会产生一个函数的特性


注意点:
1、子类中复写方法的权限要>=父类中被复写方法的权限
2、静态的方法必须被静态的重写
 
 this 和super关键字对比
 1、访问属性:this 首先在子类中查找,如果没有再到父类中查找   super 直接查找父类
 2、访问方法:this 先在子类中找,如果没有就去父类中查找       super直接访问父类中方法
 3、调用构造:this调用本类中的其他构造方法                    super调用父类中的构造函数
 4、特殊    :this代表了当前对象                              super代表了父类所占的内存空间
 5、作为参数:可以作为参数                                    super 没有此用法
  其实所有子类的构造函数的第一行,都调用一个默认的空参数的父类的构造函数
  为什么要在子类中去访问父类的构造函数
  答:因为子类想知道父类的属性


如果父类中没有空参的构造函数,就要手动在子类中调用父类中带参的构造函数


this和super要放在构造函数的第一句,而且不能同时存在
为什么要放在第一行呢?
因为初始化工作要先完成
为什么this和super不能同时在构造函数中出现?
因为this要放在语句的第一行,而super也要放在语句的第一行,所以他们两个冲突


override和overload的区别
overload是在本类中有方法名相同而参数列表不相同的方法
override是在子类中出现和父类中方法名一模一样的方法,通过子类创建实例对象来调用,调用的是子类中定义的方法,这就说明父类中的方法是被覆盖了












 
0 0
原创粉丝点击