域隐藏
Java中的域即代表类中的成员变量,域隐藏即为子类和父类同时存在相同的成员变量,可以和方法的覆盖形成对比进行记忆。
代码示例:
class person
{
int age;
public void out() {
System.out.println("父类的年龄为:"+age);
}
}
class student extends person
{
int age=20; //覆盖父类的成员变量age
student(int Newage)
{
super.age=Newage; //对父类的age进行赋值
super.out();
}
public void output()
{
System.out.println("子类的年龄为:"+age);
}
}
public class DohiCover {
public static void main(String[] args) {
student s1=new student(15);
s1.output();
}
}
结果:
父类的年龄为:15
子类的年龄为:20
Process finished with exit code 0
- 可能很多人认为域隐藏没有用处,或者不明白其好处在哪里。域隐藏可以降低数据或模块之间的耦合度,符合软件程序设计的特点。
域隐藏的优势:
- 软件设计讲究高内聚低耦合,域隐藏符合低耦合的特点,它可以使数据之间的联系降低。如该题中: 子类的成员变量age代表子类对象的年龄,父类的成员变量age可以采用super.age的方式进行定义;如果子类中没有定义成员变量age,那么子类和父类共享一个age,当需要分开使用时,却发现无从下手。
- 可能有人说,直接使用age01,age02这样定义在子类中不好么;当然可以,但如果子类太多时,会导致记不清该子类中定义的age**,从而导致出错。
- (注:此为作者个人观点。)
高内聚低耦合的作用以及如何使用可见: https://baike.baidu.com/item/%E9%AB%98%E5%86%85%E8%81%9A%E4%BD%8E%E8%80%A6%E5%90%88/5227009?fr=aladdin.