继承
Java语言不支持多重继承,一个类只能继承一个父类,但一个父类可以有多个子类。
1.结构
子类(衍生类/扩展类) extends 父类(基类)
2.特殊情况
1. 如果 父类和子类的成员变量相同
例如: name
那么使用时,用的就是子类的name
如果一定想要用到父类中的成员变量,那就用super调用
如果存在父子类关系建议成员变量不要同名因为一定会有一个值赋值不到
2.子类中可以引用父类对象
3.创建子类对象前,会先创建父类对象加载子类前,会先加载父类
4.构造方法:
使用子类构造方法前,一定会默认调用父类的无参构造方法
子类
3.super()
1.表示父类对象
2.使用子类对象构造方法时,会默认调用父类的无参构造方法使用super()调用
3.如果父类中没有无参构造方法,可以手动调用父类中有参构造方法使用super(参数)
4.在构造方法中使用时,只能放在构造方法第一行
4.this关键词 和 super关键词
this表示当前类对象
super表示父类对象
5.方法的重写(Override)
1.前提条件:
必须存在父子类关系
2.语法:
方法的修饰词 和 方法的返回值 和 方法的名字 和 方法的参数必须和父类中的方法一致,叫方法的重写
方法的重写(Override) 和 方法的重载(Overload)的区别
重载与重写是完全不同的语法现象,区别如下:
-
重载是指在一个类中定义多个方法名相同但参数列表不同的方法,在编译时,根据参数的个数和类型来决定绑定哪个方法。
-
重写是指在子类中定义和父类完全相同的方法,在程序运行时,根据对象的类型不同(而不是引用类型)而调用不同的版本。
6.抽象类
1.抽象类:
用abstract修饰的类叫做抽象类
一个类中有抽象方法,那这个方法就一定是抽象类
抽象类不能new对象,也就是不能实例化,但能创建子类
2.抽象方法
(1) 出现的前提:
所有的子类都重写了父类中的方法,那就意味着父类中的方法体没有任何意 义,可以去除
(2)特点:
a. 用abstract修饰的并且没有方法体的方法,叫做抽象方法
b.抽象方法只能存在抽象类中
c.非抽象的子类继承抽象类,就必须重写抽象类中的所有方法,否则就把类变 成抽象类
3.成员变量不能变成抽象的,因为已经确定了变量的类型