• 从头认识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的一些特性。


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

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

    目录


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

  • 相关阅读:
    Mysql存储过程和函数
    python反编译chm文件并生成pdf文件
    python转换html到pdf文件
    python获取系统开机时间
    OpenSL ES: 利用OpenSL ES实现录音功能
    android: 根据文件uri 获取文件名
    Java: InputStream转化为byte数组
    Linux: 查看二进制文件
    Vim: 回到上次编辑的位置
    LayoutInflate: Avoid passing null as the view root
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944464.html
Copyright © 2020-2023  润新知