• 从头认识java-5.3 public private protected


    这一章节我们来讨论一下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的一些特性。


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

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

    目录


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    反射机制(java)
    浅拷贝和深拷贝(java)
    注解(annotation)
    Oracle函数使用
    安装scikit-learn
    connection String加密
    [阿里移动推荐算法]比赛_快速入门_4_19_update_仅供参考,思维不要受局限
    阿里大数据竞赛非官方指南第三弹-- LR入门
    文本特征提取方法研究
    [新浪微博互动预测大赛]来自内部赛冠军的问候,教你破40啦!
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944464.html
Copyright © 2020-2023  润新知