Java只支持单重继承,即一个类只能有一个父类。Java提供了接口来实现类的多重继承功能。
接口的定义
----和类文件一样,接口文件的文件名必须与接口名相同
[访问权限修饰符] interface 接口名 [extends 父接口列表] {
[public] [static] [final] 变量;
[public] [abstract] 方法; ----方法只有定义而没有实现
}
例如:
public interface ICalculate{
final float PI = 3.14159f;
float getArea(float r);
float getCircumference(float r);
}
接口的实现
[访问权限修饰符] class 类名[extends 父类名] [implements 接口列表] { ----多个接口间用“,”分隔
----修饰符可选:public、abstract和final
----多个接口如出现变量名冲突,则可用“接口名.变量名”解决。出现方法冲突则只要实现一个。
}
例如:
public class Cire implements ICalculate{
public float getArea(float r) {
//函数体
}
public float getCircumference(float r) {
//函数体
}
}
在类中实现接口时,方法名、返回值类型等必须与接口中的一样。
类的继承
[修饰符] class 子类名 extends 父类名 {
类体
}
重写(覆盖)
可以使一个方法在不同的子类中表现出不同的行为
super
子类可以继承父类的非私有成员变量和成员方法。但是如果子类中声明的变量与父类中的变量同名,或子类的方法重写了父类的方法。则此时子类不能继承父类的该成员变量或成员方法。如果想在子类中访问父类中被子类隐藏的成员变量或成员方法,就可以使用super关键字。
作用1:调用父类的构造方法
super( [参数列表] );
例如:
public class Beast {
String skin = " ";
public Beast(String str) {
skin = str;
}
}
public class Tiger extends Beast {
public Tiger() {
super("条纹");//调用Beast的构造方法
}
}
作用2:操作被隐藏的成员变量和成员方法
super.成员变量
super.成员方法( [参数] )