Dotcpp  >  编程教程  >  Java子类与继承  >  Java成员变量的隐藏和方法重写

Java成员变量的隐藏和方法重写

点击打开在线编译器,边学边练

在编写子类时,我们仍然可以声明成员变量,一种特殊的情况就是,所声明的成员变量的名字和从父类继承来的成员变量的名字相同,声明的类型可以不同,在这种情况下,子类就会隐藏所继承的成员变量。


子类隐藏继承的成员变量的特点如下:

(1)子类对象以及子类自己定义的方法操作与父类同名的成员变量是指子类重新声明的这个成员变量。

(2)子类对象仍然可以调用从父类继承的方法操作被子类隐藏的成员变量,也就是说,子类继承的方法所操作的成员变量一定是被子类继承或隐藏的成员变量。


注意:

子类继承的方法只能操作子类继承和隐藏的成员变量。子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量。


子类通过重写可以隐藏已继承的方法,方法重写也称为方法覆盖。如果子类可以继承父类的某个方法,那么子类就有权利重写这个方法。方法重写是指子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同。子类如此定义的方法称作子类重写的方法,不属于新增的方法。


子类通过方法的重写可以隐藏继承的方法,并把父类的状态和行为改变为自身的状态和行为。如果父类的方法f()可以被子类继承,子类就有权利重写f(),一旦子类重写了父类的方法f(),就隐藏了继承的方法f(),那么子类对象调用方法f()一定调用的是重写方法f()。如果子类没有重写,而是继承了父类的方法f(),那么子类创建的对象当然可以调用f()方法,只不过方法f()产生的行为和父类的相同而已。


重写方法既可以操作继承的成员变量、调用继承的方法,也可以操作子类新声明的成员变量、调用新定义的其他方法,但无法操作被子类隐藏的成员变量和方法。如果子类想使用被隐藏的方法或成员变量,必须使用关键字super。


注意:

重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限,访问限制修饰符按访问权限从高到低的排列顺序是:public、protected、友好的、private。例如:子类重写父类的方法f,该方法在父类中的访问权限是protected级别,子类重写时不允许级别低于protected。



本文固定URL:https://www.dotcpp.com/course/761

上一课:

Java子类与对象

下一课:

Java super关键字

Java教程
第一章 Java入门
第二章 Java运算符和表达式
第三章 Java流程控制
第四章 Java类和对象
第五章 Java子类与继承
第六章 Java接口与实现
第七章 Java内部类与异常类
第八章 Java常用实用类
第九章 Java输入输出流
第十章 Java数组
Dotcpp在线编译      (登录可减少运行等待时间)