1.先说说感触
Java最初的兴起,很大一部分是因为它是面向对象的语言。面向对象最大的特点便是“万事万物皆对象”,而在现实世界中,每个事物的确可以认为是一个独立的对象。将现实的问题转化为对象间的问题,再用代码描述解决问题的方法,编译成机器可以读懂的语言,最后由计算机执行得出结果,这个流程便是程序员每天的工作。
那么可以看出,程序员每天最繁重的体力劳动便是用文字表达自己的想法。这是什么行业,不就是作家吗,只不过受众是其他的作家而已。既然作家讲究文笔、修辞和意境等,程序员又该注意些什么呢?我个人觉得,能做到结构清晰,内容明确,文字简练即可(这就是代码架构出现的原因)。2.修饰访问权限的关键字
![](https://images2017.cnblogs.com/blog/1305747/201801/1305747-20180129145807890-544570644.png)
3.访问权限在现实中的场景
4.代码描述现象
首先新建一个项目,通过包名区分不同的城市,用Father代表张平,用Boy代表儿子,用Girl代表女儿,Main则是程序启动的入口和代表其他人。
由于名字是个人所有,所以用private修饰;而不同的城市对应不同的包名,所以用默认即可;只要是张平的孩子都姓张,所以用protected修饰;电话号码就是让别人记的,所以用public修饰。
package org.lance.beijing; public class Father{ private String firstName = "平"; /*default*/ String address = "北京市"; protected String lastName = "张"; public String phone = "13366668888"; @Override public String toString() { return "Father [firstName=" + firstName + ", address=" + address + ", lastName=" + lastName + ", phone=" + phone + "]"; } }package org.lance.beijing; public class Boy extends Father { @Override public String toString() { return "Boy [firstName=" + firstName + ", address=" + address + ", lastName=" + lastName + ", phone=" + phone + "]"; } }package org.lance.shanghai; import org.lance.beijing.Father; public class Girl extends Father { @Override public String toString() { return "Girl [firstName=" + firstName + ", address=" + address + ", lastName=" + lastName + ", phone=" + phone + "]"; } }
在程序的入口处实例化这三个对象,展示每个人的基本资料。
import org.lance.beijing.Boy; import org.lance.beijing.Father; import org.lance.shanghai.Girl; public class Main { public static void main(String[] args) { System.out.println(new Father().toString()); System.out.println(new Boy().toString()); System.out.println(new Girl().toString()); System.out.println(new Father().phone); } }5.运行的结果
![](https://images2017.cnblogs.com/blog/1305747/201801/1305747-20180129145915171-1143582621.png)
Boy和Girl都会报Father的成员属性不可访问的错误,说明此处不能从Father那获取。我们找到对应的变量,进行删除,那么运行的结果便是子女和其他人能从张平那访问的。