为什么只能这样调用Protected方法?

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:57:00
public class Device extends BasicDevice {
void changeBasic(String t) {
super.changeS(t); // calls protected method
}
public static void main(String[] args) {
Device d = new Device();
d.showS();
d.changeBasic("Changed"); // derived class can access protected
d.showS();
DeviceFail.main(args);
}
}
而不能直接用d.changes("Changed")

简单点说是这样的:
protected它本身是私有的,但可由从这个类继承的任何东西或者同一个包内的其他任何东西访问.

但是不代表他的继承类可以调用,也继承类也只只是在内部调用而已

如:

import java.util.*;

class Villain {

private int i;

protected int read() { return i; }

protected void set(int ii) { i = ii; }

public Villain(int ii) { i = ii; }

public int value(int m) { return m*i; }

}
public class Orc extends Villain {

private int j;

public Orc(int jj) { super(jj); j = jj; }

public void change(int x) { set(x); }

} ///:~

可以看到,change()拥有对set()的访问权限,因为它的属性是protected(受到保护的)。

但是你不可以new出来直接调用
只能在类里调用
明白了吗?

java的访问权限一共有4种,分别是public/protected/friendly/private

这四个的权限范围 public>protected>friendly>private

我不知道楼主知道什么叫包吗?简单的说就是一组能达到相近功能的类的集合。

public 顾名思义公开的,任何类和方法都可以访问它;
private 也很简单 私有的嘛 只有自己类本身可以访问;
唯一要费点心思的是pr