java之中的四种访问权限和子类如何继承父类特性

Public:对所有类可见

Protected:对同一包中的类,和子类可见

Private:仅对类本身可见        

Default:对同一包中的类可见

为了理解方便,可见的意思也就是可以使用这个特性(域,方法,类),对子类可见就是子类也具有这些特性。但是继承的时候,子类从父亲继承来的那些东西,他们的权限仍然是保持不变的,子类是具有这些特性,但是你能不能使用子类的这些特性,取决于这些特性的权限修饰符,如果你和子类在一个包,那么子类继承父亲的所有特性你都可以使用,如果你和子类不在同一个包,那么子类继承父类的特性,你只能使用public的。

package1:Parent,ChildClass1,TestInheritance

package2:ChildClass2,TestInheritance

package3:TestInheritance


继承的时候,属性的继承原则和方法的继承原则完全相同,所以我们以属性为例子。

Public class Parent{

         Public int a;

         Protected int b;

         Int c;

         Private int d;

         …}

Child1会继成所有public,protced,属性,又因为和父类在同一个包中所以还会继承默认属性,也就是a,b,c

Child2会继成所有public,protced,属性,但是因为和父类在不同包中,所以并不能继承默认级别属性,也就是a,b

但是需要注意的是这些特性依然属于父类的特性,你在使用这些子类的时候,使用的也是父类的特性,父类里面那些特性哪些对你可见,取决于你想对于父类的位置,和这些特性的修饰符。而不是你想对于子类的特性。

假设现在有一个Test类,它可能在package1,package2,package3中:

Package1中,则可以看见Child1中所有三种属性,a,b,c;而Child2的属性能看到它所继承的特性之中,想对于父类你可见的时a,b.

Package2中,则可看见Child1中public属性a,因为它的另外两个属性是protected和默认级别,所以不可见。而Child2中也只能看到a.

如果在Package3,则只能看到Child1和Child2中公开的属性a.

总之:父类里面所有public和protected属性子类都能继承,但是只有当子类和父亲在同一个包中的时候才能继承默认级别属性。而且继承的时候不管这个属性或者方法是static的,或者是final的。当我们在通过子类访问子类从父类继承的特性时,相对于父类的位置。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值