Java子类的继承性相关的一些理解(初学欢迎指正)

文章详细阐述了Java中子类继承父类的规则,包括在同一包和不同包中的继承特性。重点讨论了protected成员变量和方法的继承与访问权限,指出它们可以在同一包或不同包的子类中被继承,但访问权限取决于子类和父类的包关系。

子类的继承性:

首先得先说明什么是继承,就是说子类继承父类的成员变量和方法就像是在子类中直接声明变量和方法一样在子类中可以使用,一个子类继承的成员应当是这个类的完全意义的成员,如果子类中声明的实例方法 不能操作父类的某个成员变量,该成员变量就没有被子类继承。

(1)子类和父类在同一个包中的继承性

如果子类和父类在同一个包中,那么子类会继承父类中不是private的成员变量和方法,同时这些继承的成员变量和方法的访问权限也不会变。

(2)子类和父类不在同一个包中的继承性

如果子类和父类不在一个包中,那么子类继承了父类的protected和public的成员变量和方法,同样地权限不会发生变化,但要注意不能继承父类的友好变量和友好方法。另外值得一提,我一开始看到这个子类和父类不在同一个包中还能继承protected是很疑惑的,因为根据以下图片protected类型的成员变量和方法在不同包间是不能继承的:(这儿好像有错,注意访问权限和继承的关系,我等有空再进行笔记修改,这儿应该是子类继承父类的成员变量和方法后访问权限不变。----子类继承父类的成员变量方法是类继承到类中的,而访问权限是子类和对象之间的,你对象可能是在其他包或者其他类中创建的。)

protected的进一步说明:

一个类A的子类B有个子类C,那么这个A中的protected成员变量和方法可以被它的直接子类和间接子类继承,B和C可以继承A的上述。如果C类在C本身中创建了一个对象,那么这个对象总是可以通过”.“运算符访问继承的或者自己定义的protected变量和方法,但如果是在另一个类D中创建了一个C的对象D1,那么这个对象对protected变量和方法的访问权限如下:

(1)子类C中亲自声明的protected成员变量和方法(不是从别的类继承的),D1在访问这些非继承的protected成员变量和方法时们只要D类和C类在同一个包中即可。

(2)如果C的protected成员变量和方法是从父类继承来的,那么要一直追溯到祖先源类,即A类,则需D类和A类在同一个包中D1才能访问继承的protected变量和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值