当前位置: 技术问答>java相关
关于private和protected
来源: 互联网 发布时间:2015-08-08
本文导语: 为什么用protected定义的内部类,在另外一个public类里能用“外部类.内部类”访问到,用private定义的却不行?代码如下: package sample.parcel; abstract class Contents { abstract public int value(); } interface Destination { String r...
为什么用protected定义的内部类,在另外一个public类里能用“外部类.内部类”访问到,用private定义的却不行?代码如下:
package sample.parcel;
abstract class Contents {
abstract public int value();
}
interface Destination {
String readLabel();
}
public class Parcel3 {
//用private就不能访问,用protected,public可以访问
protected class PContents extends Contents {
private int i = 11;
public int value() {return i;}
}
protected class PDestination implements Destination {
private String label;
private PDestination(String whereTo){
label = whereTo;
}
public String readLabel() {return label;}
}
public Destination dest(String s) {
return new PDestination(s);
}
public Contents cont() {
return new PContents();
}
}
package sample.parcel;
import sample.parcel.*;
class Test3{
public static void main(String[] args) {
Parcel3 p = new Parcel3();
Contents c = p.cont();
Destination d = p.dest("Tanzania");
//当PContents定义成private时不能使用下面这句
Parcel3.PContents cc = p.new PContents();
}
}
package sample.parcel;
abstract class Contents {
abstract public int value();
}
interface Destination {
String readLabel();
}
public class Parcel3 {
//用private就不能访问,用protected,public可以访问
protected class PContents extends Contents {
private int i = 11;
public int value() {return i;}
}
protected class PDestination implements Destination {
private String label;
private PDestination(String whereTo){
label = whereTo;
}
public String readLabel() {return label;}
}
public Destination dest(String s) {
return new PDestination(s);
}
public Contents cont() {
return new PContents();
}
}
package sample.parcel;
import sample.parcel.*;
class Test3{
public static void main(String[] args) {
Parcel3 p = new Parcel3();
Contents c = p.cont();
Destination d = p.dest("Tanzania");
//当PContents定义成private时不能使用下面这句
Parcel3.PContents cc = p.new PContents();
}
}
|
java中protected关键字与c++不同,不光子类,连同一个包下面的所有类都能访问到,protected是包中的public+子类。
private只有自己能访问!
private只有自己能访问!
|
protected能被子类和同一个包中的类访问
private只能被自己访问,子类也不可以
private只能被自己访问,子类也不可以
|
protected能被子类和同一个包中的类访问
private只能被自己访问,子类也不可以
private只能被自己访问,子类也不可以