这一章节我们来讨论一下public 、private和protected
1.CLASS_PATH
环境变量里面的CLASS_PATH,这个路径就是我们java寻找文件的路径。
注意:一般在CLASS_PATH里面都会加上"."代表当前文件夹,如果不加上这个符号,那么,你编辑的java很有可能不能编译,因为在CLASS_PATH里面特定的几个文件夹里面很可能找不到你的源文件。
2.public
对于所有成员公开
package com.ray.ch05;
public class Test {
private int id;
private void say() {
}
public static void main(String[] args) {
new Test();
}
}
3.private
只能本类访问,其他所有都不可以。
package com.ray.ch05;
public class Test {
private int id;
private void say() {
}
public static void main(String[] args) {
new Test().say();// 访问私有方法。
new Test().id = 0;//设定私有域的值
System.out.println(new Test().id);//读取私有域的值
}
}
我们在同一个包里面建立另一个类Test2
package com.ray.ch05;
public class Test2 {
public static void main(String[] args) {
new Test();
// new Test().say();// 抛异常
// new Test().id = 0;//抛异常
// System.out.println(new Test().id);//抛异常
}
}
上面的这个类只能new Test(),其他的操作都是错误的。
4.protected
只能够子类访问父类的protected方法或属性。
我们修改一下刚才的那两个类,使得Test2继承Test,然后再Test里面建立一个protected的属性域。
package com.ray.ch05;
public class Test {
private int id;
protected String name;
private void say() {
}
public static void main(String[] args) {
new Test().say();// 访问私有方法。
new Test().id = 0;//设定私有域的值
System.out.println(new Test().id);//读取私有域的值
}
}
package com.ray.ch05;
public class Test2 extends Test {
public static void main(String[] args) {
new Test();
System.out.println(new Test2().name);// 读取父类的属性域
// System.out.println(new Test2().id);//抛异常,因为id是private
}
}
从上面代码可以看见,子类Test2可以读取父类Test的protected属性。同样的,也可以延伸到方法上面去。
package com.ray.ch05;
public class Test {
private int id;
protected String name;
private void say() {
}
protected String setName() {
return "";
}
public static void main(String[] args) {
new Test().say();// 访问私有方法。
new Test().id = 0;// 设定私有域的值
System.out.println(new Test().id);// 读取私有域的值
}
}
package com.ray.ch05;
public class Test2 extends Test {
public static void main(String[] args) {
new Test();
System.out.println(new Test2().name);// 读取父类的属性域
System.out.println(new Test2().setName());// 读取父类的方法
// System.out.println(new Test2().id);//抛异常,因为id是private
}
}
总结:这一章节主要讲述了public private protected的一些特性。
这一章节就到这里,谢谢。
-----------------------------------