1.构造方法
构造方法不可以被继承的,为什么呢?应为名称的定义,构造方法是一类名称与类名一致,无返回值和类型修饰的一种。所以如果子类继承父类的构造方法的话,那么就违背了构造方法的规定。
2.成员属性
成员属性是可以被继承的,我们要知道,当使用实例化子类的时候,使用new
关键字创建子类实例时,JVM在堆内存中为该对象分配空间。这个空间包括子类继承来的成员属性(字段),以及子类自己声明的成员属性。每个对象都有自己的一份实例变量拷贝,无论这些变量是在当前类中定义的还是从父类继承的。
简单的图解
私有化属性可以被继承吗
私有化属性(在Java中使用private
关键字声明的属性)确实可以被继承,但是它们在子类中不可直接访问。这意味着,尽管子类会继承父类的所有属性,包括私有属性,但是子类不能直接操作这些私有属性,因为它们对子类来说是不可见的。
在Java中,通常会为私有属性提供公共的getter和setter方法来允许外部通过这些方法间接访问和修改私有属性的值,这是一种封装的实践,目的是保护对象的状态不被非法访问和修改。
关于通过反射访问私有属性:Java的反射API确实允许程序在运行时检查和修改对象的状态,即使是私有属性。通过反射,可以绕过访问控制,使得原本不可访问的私有成员变得可访问。
私有化成员方法可以继承吗
答案是不可以的,我们学一个新的概念,虚方法
虚方法指的是非private方法,非static方法,非final方法
虚方法表指的就是虚方法的集合
当继承的时候,实际上继承的是虚方法表的内容,所以私有化成员方法不可以被继承。
虚方法表这种继承可以提高效率,继承虚方法表的话可以直接定位到这个方法,不需要去父类中依次查询了
下面是虚方法表的继承
是不是直接清晰明了。求个赞