基础知识总结:关于继承

如果要在子类中调用父类的方法可以用super关键字来调用,与super对应的this,它们之间并不是对应关系,首先super是个关键字,通过这个关键字表示调用的是父类的属性或者方法,而this是表示一个真正的对象,this可以当做参数进行传递,可当做返回值。所以千万不要搞混。

静态绑定和动态绑定的区别:

Son extends Father  子类对象son ,把子类对象赋值给父类  (Father)son,再用son调用父类的静态成员或静态方法,这叫做静态绑定。如果son不赋值给Father,而son还是自己的Son类的对象,调用与父类同名的静态成员或静态方法,调用的就是子类的静态成员和静态方法,所以当这个对象是父类的对象调用的就是父类的静态方法,这个对象是子类的对象,调用子类的静态方法。一般不要这样用,静态变量应该用类名直接调用。

动态绑定只要只重载和重写,子类对象如何决定调用的是父类还是自己的变量和方法,是根据参数类型进行比对,选择合适的方法进行调用调用。

一个父类的变量,能不能转换为一个子类的变量,取决于这个父类变量的动态类型(即引用的对象类型)是不是这个子类或这个子类的子类。

子类方法不能降低父类方法的可见性,是指如果父类是protected,子类可以是protected,也可以是public,指的是子类可以升级父类可见性但不能降低。

如果父类得方法不希望被子类继承,可以用final关键字修饰。

子类对象实例化的过程是这样的:

第一步,类初始化,父类静态代码块

第二步,类初始化,子类静态代码块

第三步,实例初始化,父类实例代码块

第四部,实例初始化,子类示例代码块

第一二步在内存村中分配类的信息,给类种的变量赋默认值,然后再执行初始化对象的内存分配。

内存分配的表现形式:

内存分为栈和堆,栈中存放函数的局部变量的地址该地址指向堆中该对象的真正存储区域,堆中存放对象信息。还有个方法区专门放类的信息。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章