6.继承实现java中怎样实现继承 通过一个关键字 extends
格式
class子类 extends 父类{
}
超类 基类 父类都是同一个意思
通过继承,子类自动拥有父类的所有成员(成员方法 ,成员属性)
继承的作用
1.提高了代码的复用性
2.通过继承,让我们子类与父类之间存在了关系,就是我们面向对象语言中第三个基本特征多态的一个前提。简单说,就是继承会产生多态
java中只支持单继承
class A{}
classB{}
classc extends A,B
这种是不可以的,java中存在单继承,一个子类只能继承一个父类,一个父类可以派生出多个子类。简单说,一个儿子只能有一个爹.一个爹可以有多个儿子.
通过这种继承关系,也就说明C类中包含了B,A中所有的成员.
java中为什么没有多继承
这时在C类中是继承A中的show,还是B中的show,这个概念比较模糊,所以java为了避免这种情况出现,不允许多继承.
怎样去学习与使用一个继承体系
大家在以后的开发中使用类时,会发现它存在一个体系。那在这时,我们怎样去使用这个体系? 最外层的一般都是定义的公共的行为 ,我们去查看最顶层的类就可以了解整个体系的公有的行为。 在使用时应该使用最底层这些子类。因为最底层都具有自己独特的行为,可以根据我们的需求来 使用不同的底层类.
什么情况下去使用继承
继承可以简单理解是 is 关系
猫 ,狗是不是动物 动物类 有两个子类 狗类 猫类
苹果,香蕉,鸭梨 都是水果 水果类 有三个子类 苹果类,香蕉类,鸭梨类
不要为了获得某个类中的某个方法,某几个属性,就使用继承。如果你发现当前这个类可是说成是另一个类,那么这时候你就可以使用继承。在父类private修饰的成员不可以被子类继承或者可以这样理解,可以被继承但是不能在子类中使用。
继承中的成员属性特点
如果想要在子类得到被子类隐藏的属性或方法,我们可以使用super这样关键字来 得到被子类隐藏的父类的属性与方法。
继承中的方法
方法的重写(覆盖)----->大子类中有一个与父类中一样的方法,这时就说子类中的这个方法将父类中的方法进行了(覆盖)重写。
重写(覆盖):一定父类,子类中才能出现
重载: 一个类中有相同的方法名 参数的个数 类型,排列顺序
重写有什么作用
1.可以将父类中的行为进行完全的改变,子类可以进行扩展
2.可以对父类中的行为进行扩展(这种操作我们在开发常用)
为什么要使用重写?
使用重写可以提高开发效率,节省代码.
覆盖注意事项:
覆盖时,子类方法权限一定要大于等于父类方法权限
静态只能覆盖静态。
覆盖的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以复写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
重写与重载的区别
重载 :在一个类中,有相同的方法名,方法的参数个数,类型,排列顺序不现可以形成重载
重写(覆盖):在子类中有一个与父类一样的方法,这时子类中的方法重写了父类中的方法
如果父类中没有无参构造,那么子类想要实例化对象,必须指定通过父类的哪个构造方法去实例化.
this([参数])
super([参数])
这两种情况只能出现在构造方法中,并且它代表的是执行某个构造
this([参数])就执行本类构造
super([参数]) 就执行父类构造
this.属性 方法
super.属性 方法
上面这两种情况 this与super都是指代对象 它可以出现在实例方法与构造方法
this()这种情况出现必须是第一句
super()出现也必须是第一句
this()与super()这种情况只能出现一个,并且都得是第一句。
为什么super()必须是第一句?
super()出现在子类的构造方法中,子类对象在创建的过程中,需要父类中的属性支持,那么必须先去加载父类。