注意:继承并不是特别推荐使用,因为继承违反了程序设计中的“高内聚,低耦合”。继承会使程序之间的耦合性大大增加,降低了程序的复用性。并且,JAVA中只能使用单继承
会使用到的关键字:extends ,this,super
extends: class 子类 extends 父类
this 和 super :
① this. 可以访问本类中的方法和属性(全局变量)
super. 可以访问父类中的方法和属性(全局变量)
②this(参数 ); 通过参数来执行本类中的别的构造方法,必须放在第一行,且只能在构造方法中使用
super(参数); 通过参数来执行父类中的构造方法,必须放在第一行,且指那个在构造方法中使用,且不那个用来访问private.
静态代码块:在main()执行前执行,并且只会执行一次,无论new 多少个对象
程序的初始化顺序:父类静态代码块 >>>子类静态代码块>>> 父类属性初始化赋值>>> 父类构造方法
>>> 子类属性初始化赋值 >>>>子类构造方法
方法重写( override ):
①方法重写只能是子类重写父类的方法
②方法名相同,参数相同,返回值类型也相同(或者是子类的返回值是父类的子类)。
③访问修饰符必须大于或等于父类的访问修饰范围。
④异常必须比父类的异常更加广泛。
方法重载( overload ):
①:一般情况下是发生在同一个类中。
②:方法名相同,参数列表不相同(参数的类型,参数的个数,参数的顺序)。
③:方法重载与返回值无关。
④:与访问修饰符无关。
接口( interface )(用于制定标准,规范):
①:命名一般在接口名前加 I
②:接口里的方法只能用 public , abstract (其修饰的方法为抽象方法)修饰。
③:接口中的变量必须要赋初值,并且默认只能是用public static final 修饰 ,习惯上命名要大写,因为其实际上是一个常量。(常量一般大写,变量一般小写)
④接口不能被实例化,只能通过其实现类( class 类名 implements 接口名 )被实例化.
接口 xxx = new 实现类();
⑤接口的实现类必须实现父类的所有抽象方法,除非自己也是一个接口类。
抽象类(介于类和接口之间):
①:抽象类要加 abstract 即(abstract class 类名)
②:abstract修饰的方法称为抽象方法。
③:抽象类和抽象方法的关系:1、抽象类中可以不包含抽象方法可以同时存在抽象方法和普通方法。
也可以只含有抽象方法。
2、普通类中不可以有抽象方法,即有抽象方法的类必须是抽象类。
④抽象类不能实例化,只能通过其子类被实例化。
抽象父类 xxx = new 非抽象子类();
⑤其子类必须实现其父类抽象类,否则其自身也是抽象类。 如果子类是以final修饰,则必须实现抽象方法。
⑥抽象类的属性不能是私有修饰的( private )。
final ( 最终的 ):
①:其修饰的变量不能被改变,即常量,一般需要大写。
②:其修饰的方法不能被重写。
③:其修饰的类不能被继承。
附:其修饰的引用类型(对象类型)的变量,不能再指向另外的对象(即不可以在new 新的对象)
但是其对象的属性是可以改变。