对protected的正确理解是:protected成员可以被其所在类的所有子类所访问(在子类中),但它对于包外代码的任意访问仍然是受保护的。上面这个例子不是用来说明protected的效果的。而是用来说明下面这个问题的:
是句柄变量的类型——而不是他指向的对象的类型——决定了他可以访问哪些成员。
例如上面的例子中,sp虽然指向了sc,但他所访问的并不是对象sc的类Subclass中的x,而是句柄sp本身类型Superclass中的x。
是句柄变量的类型——而不是他指向的对象的类型——决定了他可以访问哪些成员。
例如上面的例子中,sp虽然指向了sc,但他所访问的并不是对象sc的类Subclass中的x,而是句柄sp本身类型Superclass中的x。
解决方案 »
- JAVA POI 删除Excel中的Row后,下面的数据没有自动上移?
- JAVA新手的程序問題
- 傻傻的问:我经常看到一些类和方法都是没有见过的,假如我要编写一个要用到我没有见过的类或者方法时,我该怎么办啊?
- panel把menubar给遮住了,怎办?
- 我在if语句中判断,用到了class.forname,要写try catch语句怎么加阿
- 关于applet的问题
- 这两句有什么错误啊?
- 下午要东软面试,请各位大人给点意见(来着有分,up者不给)
- java如何处理HTML文件?在线给分,谢谢
- 那有Jbuilder5的注册码
- 能否只存储Graphics所画图形的一部分???
- 菜鸟问: 怎么解决hanoi的问题
我是这么理解的:
封装就是指隐藏对象中的数据或方法。变量隐藏是说限制对对象中的变量的直接访问,而是应该通过对象中的相应方法来间接地访问。同时还应注意在定义成员变量时,应给与适当的访问权限。例如:
public class Employee{
protected int employeeID; public int getEmployeeID(){
return employeeID;
} public int setEmployeeID(int id){
employeeID = id;
}
}
这样,employeeID对于包外的代码来说就被隐藏了(不能直接访问),但可以通过getEmployeeID()和setEmployeeID()方法来访问。