`

Shadowing, Overriding, Hiding and Obscuring

阅读更多

当子类属性与父类属性重叠时

 

这种叫法上是shadowing

最常见的例子就是应用于setter中,当然楼主提到的是子类对父类属性的shadow

int width;
  . . .
public void setWidth(int width) {
    this.width = width;
}

shadowing会容易造成迷惑,所以一般对shadowing持慎用态度

 

关于这个主题,分门别类大概有四种
Shadowing, Overriding, Hiding and Obscuring

1.shadowing 指属性的隐藏
2.overriding 指实例方法的覆盖,运行时可发生多态
3.hiding 指静态方法的覆盖,无多态

4.obscuring 是自定义变量名与系统中已存在类型重叠时
看一下这个:

class A {
	static int MIN_PRIORITY = 59;
};

public class Obscure {
	static A Thread;

	public static void main(String args[]) {

		// print value of class
		// variable Thread.MIN_PRIORITY

		System.out.println(Thread.MIN_PRIORITY);

		// print value of
		// java.lang.Thread.MIN_PRIORITY

		System.out.println(java.lang.Thread.MIN_PRIORITY);
	}
}

 

referenced from: http://jroller.com/navanee/entry/shadowing_overriding_hiding_obscuring

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics