继承的相关问题
文章目录
-
具有继承关系的父子类,子类对象的内存结构是什么样**?**
-
发生类型转化时(运行时多态)内存发生了什么**?**
-
子类继承了父类的私有方法以及私有变量。
继承后只能通过大于
private
权限的方法间接访问继承的private
方法。比如属于同一个包,那么通过权限大于
private
的方法简介访问。属于不同包,通过权限大于(default)
的方法间接访问。 -
多态建立在继承和重写上,多态机制使得一个对象可以看作不同的形态。
-
若子类静态方法和父类静态方法的函数标签一样叫方法隐藏。
当使用父类类型子类对象时,调用同名静态方法是调用的父类的静态方法。
-
若子类成员方法和父类成员方法函数标签一样叫方法重写。
当使用父类类型子类对象时,调用同名成员方法是调用的子类的成员方法。
-
若子类和父类的变量同名(不管是成员变量还是静态变量)叫变量隐藏。
-
子类重写了的方法,子类对象只能直接访问重写后的方法。
-
子类隐藏的变量以及方法可以通过转为父类类型进行访问(前提是访问权限够)。
-
不管是重写还是隐藏,都能使用
super
关键字访问。 -
一个方法调用了某个父子类同名的变量,那么该变量被谁的方法调用,就使用谁的变量。
-
子类的成员方法不能重写其能够访问的父类的静态方法,为什么**?**
若子类和父类同包,那么子类成员方法不能重写父类权限大于
private
的static
方法。若子类和父类不同包,那么子类成员方法不能重写父类权限大于
(default)
的static
方法。 -
子类的静态方法不能重写其能够访问的父类的成员方法,为什么**?**
若子类和父类同包,那么子类静态方法不能重写父类权限大于
private
的成员方法。若子类和父类不同包,那么子类静态方法不能重写父类权限大于
(default)
的成员方法。 -
重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限。
-
子类重写的方法返回值必须比父类的返回值的类型及其子类,若父类方法是
void
,那么子类重写也必须void
。