1.继承可以使你定义一个通用的类(父类),之后扩充该类为一个更加特定的类(子类)。
子类从父类中继承可访问的数据域和方法,还可以添加新的数据域和新方法。
语法:public class Subclass extends Superclass;
2.父类中的私有数据域在该类之外是不可访问的,故不能在子类中直接使用,若父类中
定义了公共的访问器/修改器,那么可以通过这种方式来访问它们。
3.Java不允许多重继承,一个Java类只能直接继承自一个父类(单一继承 simple
inheritance),但多重继承可以通过接口来实现。
4.super关键字
1)super是指这个super关键字所在类的父类。
2)两种用途:
i.调用父类的构造方法;
语法:super(); 或 super(parameters);
必须出现在子类构造方法的第一行。
构造方法链:
如果没有显式调用重载的构造方法或父类的构造方法,编译器就会自动把
super()作为构造方法的第一条语句。
如 public ClassName(){
}
等价于public ClassName(){
super();
}
(这个过程可以链式传递至继承体系结构的做后一个构造方法被调用为止)
ii.调用父类的方法;
语法:super.methodName(parameters);
注:一般不需要加super,因为子类以及继承了父类的方法。但在方法重写的时候
若要调用父类方法,必须加super
方法重写(method overriding):需要在子类中使用和父类一样的签名及一样
的返回值类型。
使用重写标注来避免方法重写与方法重载的混淆错误:
重写标注@override 表示被标注的方法必须重写父类的一个方法,具有该标注
的方法没有重写父类的方法,编译器将报告一个错误。
5.要设计一个可被继承的类,最好提供一个无参构造方法,避免程序错误。
public class Apple extends Fruit{
}
class Fruit{
public Fruit(String name)
{
}
}
由于子类中没有显式定义的构造方法,故默认使用无参构造方法,但Fruit中没有定义
无参构造方法,故会出现编译错误。