重写,子类对象实例化和super
1.子类继承父类之后,可以对父类同名同参数方法进行覆盖,即重写,比如一个父类圆中的求面积的方法,一个子类圆柱体继承了之后,这个方法从实际和逻辑出发就要变成求表面积了,所以理所当然要重写该方法改成求表面积的功能,并且:其实重写也体现了多态或者说动态,因为编译期也是认为调用的父类方法,但是执行时才会发现并实际调用子类重写的方法
2.子类在继承了父类之后,就获得了父类所有的属性和方法,创建了子类的对象后,就会获得其**,如果父类有私有的,子类拥有但不可见或者说不可用
3.构造器不能重写,因为名本身就不可能一样,如果要用父类构造器的功能,可以在构造器内第一行显示调用写super(形参列表),
4.如果不重写,就会默认调用父类的属性方法,不需要显示声明super,但是同名就必须了.
5.Super和this必须在构造器的首行出现(要不然第一行写一些属性来赋值,但是这时候还没调父类构造器也就是还没实例化呢jvm就不知道这些属性是什么东西,所以super一定在第一行),且不能同时在一个构造器中出现(无论如何创建子类对象时,都会先保证初始化了父类,即调用了父类构造方法,堆里生成了对象,然后让子类看到父类是如何初始化的然后即拿到其属性和方法),
6.如果子类有多个构造器,那么至少有一个调用了super(形参列表),因为至少要有一个把父类的构造器调一下去实例化父类(子类可见的没重写的是不会在子类中体现的,需要父类体现,所以至少有一个,其余的可以显示this调子类其他的)
6.子类实例化时一定会调用父类的构造器,子类是对父类的丰富和扩展,但是对一些不需要重写即覆盖的东西并没有写在子类中,所以必需要先初始化父类才知道有哪些内容
javase个人学习总结(八)重写,子类对象实例化和super
最新推荐文章于 2024-03-20 22:31:43 发布