继承是面向对象编程的一个特性,使用继承可以最大限度地实现代码的复用。
继承就是在已有类的基础上构建新的类,两个类之间具有is kind of的关系。一个类继承一个已有类后,可以对被继承类中的方法进行重用。
新的类可以完全继承,也可以修改或扩展,修改即方法重写,扩展即新增方法。子类的方法可以有自己的特点。
方法的重写发生在父子类,方法的重载是在同一个类中。方法的重写通过隶属的对象类型加以区分。两个不同的类中有相同名称的方法,则对象默认调用所属类中的此方法。
继承可实现在类之间的共享属性和方法,但是共享是在其方法的特性下。如父类的private,子类是无法直接访问的。
在类的非静态成员中,this用于访问本类的成员,super用于访问父类的成员。
子类重写父类的方法,子类的方法必须比父类的更开放,不可以缩小方法的访问权限。
不要滥用继承,继承的方法会有父类的特性,如果处理不当,可能会影响子类的使用。父类的修改会影响所有子类,子类的修改不影响父类
object类是所有java类中的顶级父类。所有类的定义里,都隐含了extends Object。Object中的方法不是final方法,可以被重写。重写是访问权限必须为public,且名字不可以改变。若直接输出对象,则自动调用toString方法来输出此对象。toString是经常被重写的方法。
super关键字是用来在子类的成员方法中访问父类成员,可以访问成员变量,普通成员方法和构造方法。不能在子类的非构造方法中通过super调用父类的构造方法。如果父类的方法的权限是private,则不可以直接调用。如果要访问父类的私有属性,需要在父类中编写public方法,在public方法中调用私有属性。
如果使用super来调用父类的构造方法,编译器会在子类构造方法的第一条语句之前默认调用父类无参数的构造方法。即编译器会自动在此构造方法的开始处运行“super();”语句。
如果父类没有提供无参,子类又没有显示用super(,,)去调用父类已有的构造方法时,系统默认调用是无法成功的,此时程序报错。提倡每个类中提供无参的构造方法。
final修饰类时,表示这个类不可以被继承,即不可以作为父类。在java中,String类是final类。final修饰方法,表示这个方法不可以被重写。