- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * 缺省访问控制 如:class Tom { int weight; int f(int a,int b) {.......} .......... } class Bob { void g() { Tom cat=new Tom(); cat.weight=23; cat.f(3,4); } 友好访问允许我们将相关的类都组合到同一个文件夹内(即同一个包内),方便它们的友好成员之间相互访问。我们便“拥有”了那个包内的代码。 缺省访问控制 在任何一个与Tom 同一包中的类中,都可以通过Tom类的类名访问Tom类的友好的类变量和友好的类方法。 案例 class Tom { static float weight; static float f(float a,float b) { float c; c=a+b; return c; } } class Bob { float x,y; void g() { x=Tom.weight; y=Tom.f(10,20); } } 通过Tom类的类名访问友好的类变量和友好的类方法 缺省访问控制 注: 1.在同一源文件中编写命名的类总是在同一包中的。 2.如果源文件中用import语句引入了另外一个包中的类,并用该类创建了一个对象,那么该类的这个对象将不能访问自己的友好变量和友好方法。 【例】:定义了一个名为dessert的包: package dessert; public class Cookie { public Cookie() {System.out.println(Cookie constructor); } void foo() {System.out.println(foo); } } 文件Cookie.java必须驻留在名为dessert的一个子目录内 import dessert.*; public class Dinner { public Dinner() { System.out.println(Dinner constructor); } public static void main(String[] args) { Cookie x = new Cookie(); //! x.foo(); // Cant access } } 可以创建一个Cookie对象,因为它的构建器是public的,而且类也是public的。然而,foo()成员不可在Dinner.java内访问,因为foo()只有在dessert包内才是“友好”的。 import dessert.*; public class Dinner { public Dinner() { System.out.println(Dinner constructor); } public static void main(String[] args) { Cookie x = new Cookie(); //! x.foo(); // Cant access } } 包访问性实际上给出了一种访问限制,对于其它包中的用户来说,是不能访问当前包中的“友好”成员的。这种效果往往能令人满意,因为默认访问是我们通常采用的方法,默认的“友好”包访问通常已经是一种适当的隐藏方法。 .4 受保护的成员变量和方法 用protected修饰的成员变量 和方法被称为受保护的成员变量和受保护的方法。 protected关键字为我们引入了一种名为“继承”的概念 .4 受保护的成员变量和方法 用protected修饰的成员变量 和方法被称为受保护的成员变量和受保护的方法。 若一个类继承了另一个类,则两个类不论是否在同一个包中,子类能够访问父类的protected成员。 class Tom { protected float weight; protected float f(float a,float b) { …… } } class Bob extends Tom { void g()
文档评论(0)