Java不支持多重继承,多重继承为
子类是extends父类出来的,会继承父类所有public类型的实例变量和方法,但不会继承父类所有private类型的变量和方法,继承下来的方法可以被覆盖掉,但是实例变量不能被覆盖掉,但是加了static变成类变量(局部变量)后,可以被覆盖掉,并且当某个方法在子类中被覆盖过,调用这个方法时会调用覆盖过的版本。子类调用父类的方法可以用super这个关键词来引用;super.run();默认子类会在第一时间调用父类的构造方法,然后再执行自己的构造方法,即构造方法Constructot不能被override。
重载:两个方法名称相同,但是参数不同,与继承和多态毫无关系,重载可以返回类型不同,但是不可以只改变返回类型,参数一样,必须两个都修改或者只修改参数不修改返回类型;同样地重载也可以任意地设定重载版方法的存取权限。
重写:子类对父类允许访问的方法进行重新编写,方法名、参数列表必须相同,而且返回值范围小于等于父类,抛出异常范围小于等于父类,访问修饰符范围大于等于父类。此外如果父类方法修饰符为private时子类不可以重写该方法,即方法提供的行为改变,但是外貌并没有改变。
抽象类(abstract)和抽象方法:不可以new出来该类的实例,抽象类除了被继承之外没有其他用途,那么为什么要引用抽象类呢?因为例如Animal,世上没有一个Animal对象,但是他含有很多总特征,我们可以在Animal里面定义很多公共方法用来给其他子类继承。抽象类代表此类必须要被extend,抽象方法代表此方法一定被覆盖过。抽象类可以带有抽象和非抽象的方法。
接口的定义:public interface NAME{...},接口的方法一定是抽象的,并且接口中除了static、final变量,不能有其他变量。从设计层面来讲,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。实现某接口的类必须实现它所有的方法,因为这些方法都是public与abstract的,子类调用父类的方法可以用super这个关键词来引用。
抽象方法:没有实体,声明一个抽象方法,那么该类必须也是抽象类,public abstract void eat();子类必须要实现所有的抽象方法,包括继承下来的,否则子类也要定义成抽象类
那么为什么要有抽象的方法呢,抽象类的重点在于可以被子类继承的共同程序代码?因为有时无法给出任何子类都有意义的共同程序代码,抽象方法的意义就是就算无法实现出方法的内容,但是还是可以自己定义一一组子型共同的协议。
多态的好处就是所有子型都可以有那些抽象的方法
Object类:两个目的:作为多态让方法可以应付多种类型的机制,以及提供Java在执行期对任何对象都有需要的方法的实现程序代码。