学习笔记Day15
方法的重写override:子类继承父类之后,可以对父类中同名同参数的方法,进行覆盖操作。
约定俗成:子类中的叫做重写的方法,父类中的叫做被重写的方法
子类重写的方法的方法名和形参列表与父类被重写的方法名和形参列表相同。
子类的重写方法的权限修饰符不小于父类中的权限修饰符。
子类不能重写父类中权限为private的方法
返回值类型:父类中被重写的方法的返回值类型为void,则子类重写的方法的返回值类型为void
父类被重写的方法的返回值类型为A类型,则子类重写的方法的返回值类型为A类或者A类的子类
父类被重写的方法的返回值类型是基本数据类型(double),则子类重写的方法的返回值类型必须是相同的数据类型
子类重写方法的异常类型不大于父类被重写的方法抛出的异常类型。
子类和父类中的同名同参数的方法要么声明为非Static的(考虑重写),要么都声明为static的(不是重写)。
同一包中的其他类,不可以调用私有的属性
不同包的子类中,不能调用Order类中声明为private和缺省权限的属性和方法。
不同包下的普通类(非子类)要使用Order,不可以调用声明为private、缺省、protected权限的属性、方法 。
SUPER可以理解为:父类的
子父类中的属性不会出现覆盖。
可以用super.属性或者super.方法的方式显示调用。
特殊情况:当子类或者父类中定义了同名的属性事,我们想要子类中调用父类中声明的属性时,则必须显示使用super.属性的方式,表明调用的是父类中声明的属性。
super调用构造器
我们可以在子类的构造器中显式的使用super(形参列表)的方式,调用父类中声明的指定。
super(形参列表)的使用,必须声明在子类构造器的首行
我们在类的构造器中,针对于“this(形参列表)”或者“super(形参列表)”只能二选一
在构造器的首行,没有显式声明this(形参列表)或super(形参列表),则默认调用的是父类中空参的构造器:super()
在类的多个构造器中至少有一个类的构造器中使用了super(形参列表),调用父类中的构造器
子类对象实例化的全过程:
1、从结果上来看:继承性
子类继承父类之后,就获取了父类中声明的属性或方法
创建子类的对象,在堆空间中,就会加载所有父类中声明的属性。
明确:虽然创建子类对象时,调用了父类的构造器,但是自始至终就创建过一个对象。
面向对象特征之三:多态性
对象的多态性:父类的引用指向子类的对象,子类的对象赋给父类的引用
多态的使用:当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法–虚拟方法调用
有了对象的多态性以后,我们在编译器,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
总结:编译看左边,运行看右边