java中的protected
当前位置:以往代写 > JAVA 教程 >java中的protected
2019-06-14

java中的protected

java中的protected

protected(受到掩护的)会见指示符要求各人提前有所认识。首先应留意这样一个事实:为继承进修本书一直到担任那一章之前的内容,并不必然需要先领略本小节的内容。但为了保持内容的完整,这儿仍然要对此举办扼要说明,并提供相关的例子。
protected要害字为我们引入了一种名为“担任”的观念,它以现有的类为基本,并在个中插手新的成员,同时不会对现有的类发生影响——我们将这种现有的类称为“基本类”可能“根基类”(Base Class)。亦可改变谁人类现有成员的行为。对付从一个现有类的担任,我们说本身的新类“扩展”(extends)了谁人现有的类。如下所示:
class Foo extends Bar {
类界说剩余的部门看起来是完全沟通的。
若新建一个包,并从另一个包内的某个类里担任,则独一可以或许会见的成员就是本来谁人包的public成员。虽然,假如在沟通的包里举办担任,那么担任得到的包可以或许会见所有“友好”的成员。有些时候,基本类的建设者喜欢提供一个非凡的成员,并答允会见衍生类。这正是protected的事情。若往回引用5.2.2小节“public:接口会见”的谁人Cookie.java文件,则下面这个类就不能会见“友好”的成员:

 

//: ChocolateChip.java
// Can't access friendly member
// in another class
import c05.dessert.*;

public class ChocolateChip extends Cookie {
  public ChocolateChip() {
   System.out.println(
     "ChocolateChip constructor");
  }
  public static void main(String[] args) {
    ChocolateChip x = new ChocolateChip();
    //! x.foo(); // Can't access foo
  }
} ///:~

对付担任,值得留意的一件有趣的工作是倘若要领foo()存在于类Cookie中,那么它也会存在于从Cookie担任的所有类中。但由于foo()在外部的包里是“友好”的,所以我们不能利用它。虽然,亦可将其酿成public。但这样一来,由于所有人都能自由会见它,所以大概并非我们所但愿的排场。若象下面这样修改类Cookie:

 

public class Cookie {
  public Cookie() { 
    System.out.println("Cookie constructor");
  }
  protected void foo() {
    System.out.println("foo"); 
  }
}

那么仍然能在包dessert里“友好”地会见foo(),但从Cookie担任的其他对象亦可自由地会见它。然而,它并非民众的(public)。

    关键字:

在线提交作业