标签:类继承 ima 向下转型 说明 name 返回值 定义 引用类型 efault
java的为单继承、多级继承。父类有直接父类和间接父类。最上层为Object类。
类的继承使用extends关键字。public class Child extends Parent{}
子类继承了父类的方法,重名变量和方法使用就近原则,方向为向父类方向查找。super关键字,在子类中调用父类的成员变量,方法。
方法重写覆盖父类方法,使用@Overload注解,检测覆盖重写的有效性方法重写中:
子类方法的返回值必须<=父类方法的返回值范围。子类方法的权限必须[大于等于]父类方法的权限修饰符。 public > protected >(default) > private
创建新类并继承和重写满足设计需要。
子类中的构造方法,自动隐含super()的父类无参数构造方法,有参数父类构造方法手工写入调用并自动替换无参父类构造方法,父类构造方法只在子类构造方法使用调用。
说明总结,super用于父类访问,this用于本类访问。this和super的构造调用不能同时使用。
抽象方法,在抽象类public abstract class Animal中,抽象方法格式为public abstract void eat();
不能直接创建抽象类对象,使用继承并重写抽象类中的方法。最后调用子类对象。
alt+回车,快捷创建重写抽象类方法。构造函数的调用模式以父子关系,相同。
抽象类的父类是抽象类,不一定完全重写父类所有抽象方法,但是需要使用的过程中,多次继承后必须为普通类,然后开辟空间使用。
接口,多个类的公共规范。接口类例如:public interface 接口名称{},其中包含常量,抽象,默认,静态,私有方法。
接口中定义的方法为抽象方法。只做声明不做定义。没有方法体。[public] [abstract] 返回值类型方法名称(参数列表);
使用接口类,其子类为实现类或抽象类,使用继承方式为:public class Name implements MyIntegerfaceAbstract{},然后重写父类方法。
默认方法,[public] default void name{},用于解决父类接口升级的问题,自动让子类获取到父类的默认方法,并不需要一定重写。
静态方法,[public] static void name{},接口中的静态方法使用接口名称调用静态方法。
私有方法:private void name{},方便类内的共有方法的简化和清晰等。static可选,用在static方法,普通default的方法,使用普通私有方法。
常量格式:[public] [static] [final] 数据类型常量名称=数据值。其中灰色部分可以省略,一般是用大写和下划线格式表示常量。
类与类之间是单继承的。直接父类只有一个。类与接口之间是多实现的。一个类可以实现多个接口。
接口与接口之间是多继承的。当多个父本中的普通抽象方法相同,因没有方法实现没有冲突,而default方法,在多继承后,需要重写方法,确定该default方法的实现,避免冲突。
对象拥有多种形态,子类对象也是父类,可使用父类方法表示。使用时存在自动向上转型的过程。
编译过程中,看左边的父类方法,以确定编译通过,在运行过程中,看右边的new对象作为其方法实现。成员变量不同,在编译和运行过程中,都以左边父类为基准。
对象的向下转型,将父类对象还原为本来的子类对象。向下转型使用小括号,类似强制转换。
多态使得设计过程中,将多个不同的对象,转换为其公共的父类对象,调用各自子类的同名方法,自动实现的向上转型,调用向下。但是向下转型才能调用本来的代码。
instanceof用于判断多态中的向上转型的合法性,避免异常。
final修饰类:public final class,声明当前类没有子类,不可修改。
final修饰方法:public final 返回值 名称{} ,声明该方法不能被覆盖重写。而abstract关键字表示该方法一定被覆盖重写。
final修饰局部变量:该变量不能修改。final修饰后只能有一次赋值。final对引用类型修饰后,该引用类型的地址变量不可改变。
final修饰成员变量:变量不可变,和局部变量的修饰不同的是,修饰成员变量需要手动赋值,不会给默认值。默认值通过构造函数或者直接赋值方案实现。
标签:类继承 ima 向下转型 说明 name 返回值 定义 引用类型 efault
原文地址:https://www.cnblogs.com/bai2018/p/12264603.html