1.Java中的访问保护
一个类只能又两种访问级别:默认的和公共的。Public可以被任何其他代码访问,默认访问控制符仅可以被相同包中的其他代码访问
被声明为public的内容可以被任何地方访问。被声明为private的成员不能被类外看到。没有明确的访问声明,对于子类或该包中的其他类是可见的,这是默认访问。
用import语局来引入特定的类甚至整个包,类就可以直呼其名来使用
测试代码
package p1;
public class Demo
{
public static void main(String[]args)
{
//TODO Auto-generated method stub
Protectionob1 =new Protection();
Derivedob2 =new Derived();//继承Protection,先执行Protection的构造函数,再执行自己的
SamePackageob3 =new SamePackage();
}
}
package p1;
public class Derivedextends Protection
{
Derived()
{
System.out.println("derived constructor");
System.out.println("n = " +n);
// class only
// System.out.println("n_pri = " + n_pri);
System.out.println("n_pro = " +n_pro);
System.out.println("n_pub = " +n_pub);
}
}
package p1;
public class Protection
{
int n = 1;
private int n_pri = 2;
protected int n_pro = 3;
public int n_pub = 4;
public Protection()
{
System.out.println("base constructor");
System.out.println("n = " +n);
System.out.println("n_pri = " +n_pri);
System.out.println("n_pro = " +n_pro);
System.out.println("n_pub = " +n_pub);
}
}
package p1;
public class SamePackage
{
SamePackage()
{
Protectionp =new Protection();
System.out.println("same package constructor");
System.out.println("n = " +p.n);
// class only
// System.out.println("n_pri = " + p.n_pri);
System.out.println("n_pro = " +p.n_pro);
System.out.println("n_pub = " +p.n_pub);
}
}
package p2;
public class Demo
{
public static void main(String[]args)
{
//TODO Auto-generated method stub
Protection2ob1 =new Protection2();
OtherPackageob2 =new OtherPackage();
}
}
package p2;
public class OtherPackage
{
OtherPackage() {
p1.Protectionp =new p1.Protection();
System.out.println("other package constructor");
// class or package only
// System.out.println("n = " + p.n);
// class only
// System.out.println("n_pri = " + p.n_pri);
// class, subclass or package only
// System.out.println("n_pro = " + p.n_pro);
System.out.println("n_pub = " +p.n_pub);
}
}
package p2;
public class Protection2extends p1.Protection
{
Protection2()
{
System.out.println("derived other package constructor");
// class or package only
// System.out.println("n = " + n);
// class only
// System.out.println("n_pri = " + n_pri);
System.out.println("n_pro = " +n_pro);
System.out.println("n_pub = " +n_pub);
}
}
package test;
class Box
{
double width;
double height;
double depth;
public Box(double w,double h,double d)
{
//TODO Auto-generated constructor stub
width =w;
height =h;
depth =d;
}
public String toString()
{
return "Dimensions are " +width +" by " +depth +" by " +height +".";
}
}
public class test1
{
public static void main(String[]args)
{
//TODO Auto-generated method stub
Boxb =new Box(10,12,14);
Strings ="Box b: " +b;// concatenate Box object
System.out.println(b);// convert Box to string
System.out.println(s);
}
}