关闭

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

1147人阅读 评论(0) 收藏 举报
分类:

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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3540次
    • 积分:248
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:10篇
    • 译文:0篇
    • 评论:0条
    文章分类