有几句话不理解啊

liu15073458538 2017-02-04 01:11:54

刚开始学Java在看Java核心技术,图片中画黄线的3句话不能理解,脑子没有对应的东西。各位大大们,能举几个例子帮助理解,可以吗?
...全文
483 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34712076 2017-02-08
  • 打赏
  • 举报
回复
ryuugu_rena 2017-02-08
  • 打赏
  • 举报
回复
封装就是这样,你先这样用,按照规范去写。不按规范肯定会出现问题的。
baidu_34630879 2017-02-05
  • 打赏
  • 举报
回复
封装,封装好了就不能乱用,得按类的规矩来。该继承就得继承,随便new一下就调方法就太乱了。
Spinach007 2017-02-05
  • 打赏
  • 举报
回复
第二句的意思应该是,尽量用private,免得其他人搞破坏
CodingAndSleeping 2017-02-04
  • 打赏
  • 举报
回复
本类中 同包中 子类中 全局 private √ x x x 不写 √ √ x x protected √ √ √ x public √ √ √ √
liu15073458538 2017-02-04
  • 打赏
  • 举报
回复
引用 3 楼 lonrence 的回复:
我觉得书上写的不对,访问权限是以类为单位的,而不是对象。 第三段,Manager的方法是可以直接访问其他Employee对象的hiredate域的。 我在basic包里创建Employee和Manager类 Manager的方法是可以直接访问其他Employee的hiredate域的。
package basic;

public class Employee{
	private String name;
	protected String hiredate;
	public Employee(String name, String hiredate) {
		super();
		this.name = name;
		this.hiredate = hiredate;
	}
	public String getHiredate() {
		return hiredate;
	}
}

package basic;

public class Manager extends Employee{

	public Manager(String name, String hiredate) {
		super(name, hiredate);
	}
	public void Method(Employee other){
		other.hiredate = "xxxx-xx-xx";
	}
}
2、你可以这么理解,发布一个软件,有些作用,如果这个软件的实现是不可见的(private),我要改变,自己修改发布,别人拿去用就行了。如果是protected,别人继承了这个软件,就可以直接修改了,这个软件的作用就不是你能控制的了,你即使更新了新的版本也没用,这样的话,你只能向用的人说,我这个软件更新了,是用来干什么的,你要按照我的要求来用。 3、就是访问控制,让什么类能用什么类不能用。
明白了大神
  • 打赏
  • 举报
回复
我觉得书上写的不对,访问权限是以类为单位的,而不是对象。 第三段,Manager的方法是可以直接访问其他Employee对象的hiredate域的。 我在basic包里创建Employee和Manager类 Manager的方法是可以直接访问其他Employee的hiredate域的。
package basic;

public class Employee{
	private String name;
	protected String hiredate;
	public Employee(String name, String hiredate) {
		super();
		this.name = name;
		this.hiredate = hiredate;
	}
	public String getHiredate() {
		return hiredate;
	}
}

package basic;

public class Manager extends Employee{

	public Manager(String name, String hiredate) {
		super(name, hiredate);
	}
	public void Method(Employee other){
		other.hiredate = "xxxx-xx-xx";
	}
}
2、你可以这么理解,发布一个软件,有些作用,如果这个软件的实现是不可见的(private),我要改变,自己修改发布,别人拿去用就行了。如果是protected,别人继承了这个软件,就可以直接修改了,这个软件的作用就不是你能控制的了,你即使更新了新的版本也没用,这样的话,你只能向用的人说,我这个软件更新了,是用来干什么的,你要按照我的要求来用。 3、就是访问控制,让什么类能用什么类不能用。
liu15073458538 2017-02-04
  • 打赏
  • 举报
回复
引用 1 楼 heda6812098 的回复:
就是protected的子类,友元来说都是随便使用的,相当于public,但是对于别的外部类来说就是私有的,引用不了,这就是一种保护机制啊,就好比你自己的车子,你允许你的儿子用,允许你的孙子用,或者给你朋友用,但你肯定不会给陌生人用啊
谢谢啊 我明白第一句话了 第二句还是不明白 第二句为什么“通知所有程序员”?
heda6812098 2017-02-04
  • 打赏
  • 举报
回复
就是protected的子类,友元来说都是随便使用的,相当于public,但是对于别的外部类来说就是私有的,引用不了,这就是一种保护机制啊,就好比你自己的车子,你允许你的儿子用,允许你的孙子用,或者给你朋友用,但你肯定不会给陌生人用啊

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧