覆写&隐藏&重载&隐蔽&掩盖

 
覆写(override):
一个实例方法可以覆写在其超类中可以访问到的具有相同签名的所有实例方法。覆写是面向对象编程技术的基础,而且是唯一没有被普遍劝阻的名字重用形式:
Class Base{
       Public void f(){ }
}
 
Class Derived extends Base{
       Public void f() { } // overrides Base.f()
}
 
隐藏(hide):
一个域、静态方法或成员类型可以分别被隐藏在其超类中可以访问到的具有相同(对方法而言就是相同的方法签名)的所有域、静态方法或成员类型。隐藏一个成员将阻止其被继承
Class Base {
       Public static void f(){ }
}
 
Class Derived extends Base {
       Public static void f() {} // hides Base.f()
}
 
重载(overload):
在某个类中的方法可以重载另一个方法,只要它们具有相同的名字和不同签名。由调用所指定的重载方法是在编译期选定的:
Class CircuitBreaker {
       Public void f(int i) {} // int overloading
       Public void f(String s) {} // String overloading
}
 
隐蔽(shadow):
一个变量、方法或类型可以区别隐蔽在一个闭合的文本范围内的具有相同名字的所有变量、方法或类型。如果一个实体被隐蔽了,那么用它的简单名是无法引用到它的;根据实体的不同,有时你根本就无法引用到它:
Class WhoKnows{
       Static String sentence = “I don’t know.”;
       Public static void main(String[] args) {
       String sentence = “I know!”; // shadows static field
       System.out.println(stentence); // prints local variable
}
}
尽管隐蔽通常是被劝阻的,但是有一种通用的惯用法确实涉及隐蔽。构造器经常将来自其所在类的某个域名重用一个参数,以传递这个命名域的值。这种惯用法并不是没有风险,但是大多数Java程序员都认为这种风格的实惠要超过其风险:
Class Belt{
       Private final int size;
       Public Belt(int size){ // Parameter shadows Belt.size
       This.size = size;
}
}
 
掩盖(obscure):
一个变量可以掩盖具有相同名字的类型,只要他们都在同一个范围内:如果这个名字被用于变量与类型都被许可的范围,那么它将引用到变量上。相似地,一个变量或一个类型可以掩盖一个包。掩盖是唯一一种两个名字位于不同的名字空间的名字重用形式,这些名字空间包括:变量、包、方法或类型。如果一个类型或一个包被掩盖了,那么你不能通过其简单名引用到它,除非是在这样一个上下文环境中,即语法只允许在其名字空间中出现一种名字。遵守命名习惯就可以极大地削除产生掩盖的可能性。
Public class Obscure{
       Static String System; //obscures type java.lang.System
       Public static void main(String[] args){
       // Next lien won’t compile: System refers to static field
       System.out.println(“Hello, obscure world!”);
}
}
 
                                                                                         摘抄自<<Java解惑>>第8章
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值