Java中提供了单向继承,即一个类最多只能拥有一个父类。所有未指定继承其他类的类默认都继承Object父类。它是根基类。继承中,会和我们的封装特性有冲突,如我们在封装中,强调一定要让所有的类相对其他类是透明体。即只显示那些需要被使用和访问的方法等,而对实现这些方法的东西,如其中的属性等都不能够被子类访问,更不能够被任意的修改。而在继承中将有可能发生被修改问题。所以在设计类的时候,为了更好的封装性,需要注意以下几点。
1.尽量隐藏父类中所有的属性数据,即使用private修饰符,哪怕这个属性需要被子类所运用和修改,那么请相应的提供set和get方法,在方法中控制子类修改属性值的合法性问题。
2.不需要被子类访问或者不希望被子类访问和修改的类实现的辅助方法,申明为private方法。
3.希望被访问和使用的方法,但不能够被修改的方法,申明为public并且用final关键字修饰不可重写
4.只是希望子类能够访问,而其他类无法访问的访问应该申明为protected。
5.不要在父类的构造方法中调用被子类重写的方法。
子类在隐藏了父类的成员变量或重载了父类的方法后,常常还要用到父类的成员变量,或在重载的方法中使用父类中被重载的方法以简化代码的编写,这时就要访问父类的成员变量或调用父类的方法,Java中通过super来实现对父类成员的访问。
Java中,this用来引用当前对象,与this 类似,super用来引用当前对象的父类。
super的使用有三种情况:
1.用来访问父类被隐藏的成员变量,如:super.variable;
2.用来调用父类中被重载的方法,如:
super.Method ([paramlist]);
3.用来调用父类的构造函数,如:super([paramlist]);
我们通过下例来说明super的使用 ,以及成员变量的隐藏和方法的重载。