`

public,protected,private

 
阅读更多

publicprotectedprivateJava里用来定义成员的访问权限的,另外还有一种是“default”,也就是在成员前不加任何权限修饰符。如:
public   class   A{
    void   method(){};
}
method就属于default权限。

这四个修饰符的访问权限如下表:
-----------------------------------------------
                        类内部     package内       子类         其他
public             允许         允许                 允许         允许
protected       允许         允许                 允许         不允许
default           允许         允许                 不允许     不允许
private           允许         不允许             不允许     不允许
-----------------------------------------------

比如:用protected修饰的成员(变量或方法),在类内部可以调用,同一个package下的其他类也可以调用,子类里也可以调用,其他地方则不可以调用

 

 

 

 

 

 

////////////////////////////////////错误例子

 

package java1;

public class TestBase

  protected void printProtected()
  {
    System.out.println("printProtected!");
   
  }
}
import java1.TestBase;

class Child extends TestBase
{
  protected void printProtected()
  {
    System.out.println("child printProtected!");
  }
  public static void main(String[] args)
  {
    TestBase base= new Child();
   base.printProtected();    //编译报错
  }
}

Java代码 

TestBase base= new Child();   

base.printProtected();    //编译报错   


这个会出错,是因为你在不同包里访问TestBase声明的printProtected方法,所以不行,你可以在你子类的printProtected通过super来访问父类的方法。

 

可以这样解释吧,子类可以继承父类的protected方法,并且在子类内部是可以访问的(就是在子类里调用this.printProtected(),或者super.printProtected())。但是这个方法对于子类来说也是protected的。
protected的含义就是本类可以访问,同一包内的可以访问,子类可以访问。

 

<!--EndFragment-->

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics