继承:关键字 extends class 子类 extends 父类{};
提高了代码的复用性
让类与类之间有了关系,有了这个关系,才有了多态的特性。
java只支持单继承。因为多继承将会带来安全隐患,例如 类A和类B有相同名称的方法时,类C同时继承A,B,将不确定会运行哪个方法。
子类和父类拥有非私有的同名变量时,可以用super访问父类变量。
this是本类的引用。super是父类的引用。
当子父类有同一个方法时,子类对象调用该方法时,运行子类的方法,这叫做覆盖,也叫做重写。
子类覆盖父类时,必须保证子类权限大于等于父类。静态只能覆盖静态。
在进行子类对象的初始化时,父类的构造函数也会运行,这是因为子类中的第一行有一个隐式的super();子类的所有构造函数之前都有一个隐式的super();
子类必须访问父类的构造函数,当父类的构造函数为有参数的时候,在子类中就必须显式的声明super(参数);
super函数也要放在构造函数中的第一行。
final关键字:可以修饰类,变量,函数
特性:1.被final修饰的类不可以被继承
2.被final修饰的方法不可以被覆盖
3.被final修饰的变量是一个常量,既可以修饰成员变量,也可以修饰局部变量
abstract :定义抽象类和抽象方法的关键字
抽象方法没有代码块。
抽象方法一定在抽象类中。
抽象类不可以用new创建对象
抽象类可以有非抽象方法。
抽象方法要被使用,必须用子类覆写抽象类所有的抽象方法,然后创建子类对象进行调用。如果子类只覆写了部分抽象方法,那么该类还是抽象类,因为他继承了所有抽象方法,而抽象方法只能存在抽象类中。
接口:里面全为抽象方法。
interface 接口名称{}
接口里面常见定义:常量和抽象方法,都有统一的修饰符
常量:public static final
抽象方法: public abstract
类通过implements关键字实现接口
子类对接口中的所有抽象方法覆写之后才可以创建对象,否则子类也是一个抽象类。
可以实现多个接口的继承 类名 implements A,B,C…..
接口与接口之间是继承关系。接口之间可以多继承。