当前位置: 代码迷 >> 综合 >> 从头认识java-5.3 public private protected
  详细解决方案

从头认识java-5.3 public private protected

热度:73   发布时间:2023-12-10 04:08:42.0

这一章节我们来讨论一下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();}
}


对于上面的代码,其他的类只能访问构造器,因为构造器是public,其他的是private。


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的一些特性。


这一章节就到这里,谢谢。

-----------------------------------

目录