zoukankan      html  css  js  c++  java
  • 从头认识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的一些特性。


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

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

    目录


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

  • 相关阅读:
    【转】sublime text 2 中文乱码解决办法
    vi使用入门指南
    【原创】基于部署映像服务和管理(DISM)修改映象解决WIN7 USB3.0安装时报错
    日语五十音图快速记忆法
    深度阅读:C语言指针,从底层原理到花式技巧,图文+代码透析
    全民热衷“合成大西瓜”,游戏外挂上热搜,不愧是程序员!
    零基础想要转行成为程序员?这几点你要知道
    恩怨纠缠的苹果和微信!苹果底层开源代码中包含兼容微信的代码,这是苹果偷学代码啦?
    好你个C语言,原来还有这么多副面孔!
    “熊孩子”乱敲键盘就攻破了Linux桌面,其父亲发现linux漏洞
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4944464.html
Copyright © 2011-2022 走看看