一、继承
- 每一个子类仅有一个直接父类,但是可以有很多个间接父类;
- 子类继承父类可以获得父类的全部成员变量和方法:
- 对于调用来说,首先找的子类的属性和方法,如果没有向上找父类;
- 父类的抽象方法必须重写,普通方法可以不重写;
- 子类重写父类方法之后,父类方法就会被隐藏。这样子类的对象不能访问父类方法,如果要访问的话就要使用super;如果重写的是类方法,也可以使用类名.方法去调用;
- 如果父类方法被private修饰,那么子类就无法访问该方法,就不能重写该方法。如果子类写了与父类同名的方法的话,不能称之为重写,而是新建了一个方法;
二、多态
- 存在继承关系
- 子类要重写父类方法(因为继承是前提,你不重写怎么可能)
- 父类引用执行子类对象
- 向上转型会丢失子类特有的属性和方法,只有向下转型去获取;
三、接口
- 接口中的所有成员变量都默认是由public static final修饰的,且要初始化
- 接口中的所有方法都默认是由public abstract修饰的
- 接口没有构造方法。构造方法用于创建对象
- 实现接口的类中必须提供接口中所有方法的具体实现内容,因为接口中都是抽象方法嘛
- 与继承关系类似,接口与实现类之间存在多态性
- 接口也可以继承另一个接口,使用extends关键字
- 接口如何实现多态的:把接口当成父类即可,只是没有将方法写死