请问隐藏和覆盖如何区别?
解决方案 »
- 如何能把一个中文字符串转换成拼音形式的?
- 当JSplitPane为HORIZONTAL_SPLIT时,如何设置使右边的大小不变
- 一个关于加密的问题,达人入!
- 连接数据库 ms sql server 失败
- 请教JSP如何从html表单获得复选框参数值
- 怎样将数据库中的datetime数据读到GregorianCalendar对象中
- [急]符合Java Package 规则的正则表达式怎样写?
- 如何用JavaScript实现选择功能
- 请您运行这个程序,为什莫会NullPointException,谢谢
- jbuilder4.0 企业版能否把代码编译成在特定平台上运行的代码
- 读取和修改JS文件,很及,在线等
- 关于继承,程序看不懂
隐藏是指把一些逻辑处理细节或某个关键属性用非public关键字隐藏起来(private是对所有其他类隐藏,protected是对包外隐藏子类和同包不隐藏,什么关键字都没有是对包外和子类隐藏同包不隐藏),这样以避免外界处理直接访问这些属性或方法而导致意外的处理结果。隐藏可以对一个类而言,也可以对一个类的子类而言,即可以说某个类把某某属性或方法隐藏起来,也可以说某个子类把父类的某某属性或方法隐藏起来。
覆盖是针对子类而言的,也就是子类重新定义了某个与父类相同名字的属性或方法,这样,访问子类实例的从父类继承下来的属性和方法时,只能访问到子类本身覆盖过的属性和方法,父类的属性和方法就访问不到了,这种情况下,从某种意义上也算是把父类的属性或方法隐藏。但是这种隐藏并非真正意义地隐藏(也就是上面说的隐藏),而是覆盖导致的结果。
public class A {
public int x;
}
public class B extends A {
public int x;
}
如上代码,B类里的x成员会隐藏掉父类A里的x成员。