简易Java进程模型可以看到Java程序本质上是面向方法的程序,从main或run方法开始,方法就不停的在调用的新方法,形状像一个动态的方法栈,直到方法栈消亡为止,程序才结束。

实际上,方法调用方法有时会受到一定的限制:

(底下论述的前提是对象都是public的)

被标识为private的方法,只可能被同属一个对象中的方法调用;

被标识为default的方法,只可能被同属一个包中的方法调用;

被标识为protected的方法,可能被同属一个包中的方法调用,也可能被同属一个继承链的子对象中的方法调用;

被标识为public的方法,可能被一个程序中的任意方法调用。

从访问修饰符可以看出:

(1)方法的调用和访问是一码事(不过,语言哲学家维特根斯坦曾说过一句话,大概意思是,两专有名词,总有差别。);

(2)方法属于一个对象、一个包、一个继承链和一个程序,那么可以说Java程序设计既是面向对象,又是面向包、面向继承链、面向程序的程序设计;

(3)方法的调用有下列可能情况:

a,方法调用了同一个对象中的方法

b,方法调用了不在同一个对象中的方法

c,方法调用了同一个包中的方法

d,方法调用了不在同一个包中的方法

e,方法调用了同一个继承链中的方法

f,方法调用了不在同一个继承链中的方法

(4)如果把包比作国家,对象比作公司,方法比作程序员,多家公司联合起来组成一个组织合作开发,这个组织就是继承链。

公司有两个属性:属于国家、处于组织

一个程序员只能被自己公司的程序员访问,那就是private程序员

一个程序员可以被自己国家的程序员访问,即default程序员

一个程序员可以被自己国家的程序员访问,也可以被自己组织的程序员访问,即protected程序员

一个程序员可以被所有国家的程序员访问,即public程序员

 (5)留给自己的问题:Java为什么给方法设计访问修饰符?