什么是成员变量的隐藏?什么是方法的覆盖?

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:28:49
JAVA书上有嘛??

成员变量的隐藏:
如果在子类中对从父类继承来的成员变量进行重新定义,即出现了子类变量对父类变量的隐藏。所谓隐藏是指子类拥有两个相同名字的变量,一个是继承自父类,另一个是由自己定义的。当子类执行它自己定义的方法时,如果操作该变量,所操作的是它自己定义的变量,而把继承自父类的变量“隐藏”起来。当子类执行从父类继承的操作时,如果操作该变量,所操作的是继承自父类的成员变量。
举例:
class SuperClass{
int x;
……
void setX( ){
x = 0;
}
……
}
class SubClass extends SuperClass{
int x; //hide x in SuperClass
……
void setX( ){ //overload method setX( ) in SuperClass
x = 5;
}
……
}
这个例子中,SubClass是SuperClass的一个子类。其中声明了一个和父类SuperClass同名的变量x,并定义了与之相同的方法setX, 这时在子类SubClass中,父类的成员变量x被隐藏 ,父类的方法setX被重载。于是子类对象所使用的变量x为子类中定义的x,子类对象调用的方法setX( )为子类中所实现的方法。
注意,重载的方法和父类中被重载的方法要具有相同的名字,相同的参数表和相同的返回类型。
子类通过成员变量的隐藏和方法的重载可以把父类的状态和行为改变为自身的状态和行为。

方法的覆盖:
正如子类可以定义与父类同名的成员变量,实现对父类成员变量的隐藏一样,子类也可以重新定义与父类同名的方法,实现对父类方法的覆盖。当在子类中调用同名的方法时,一般情况下是调用它自己定义的方法,因而实现了对父类方法的覆盖,如果要调用父类的方法,只需在方法名前使用不同的类名或对象名即可。
举例:
import static java.lang.System. * ;