回顾
1.接口继承的概念
2.接口继承规则
规则1:与类继承不同
可以有一个以上的父接口,用逗号隔开,形成父接口列表
规则2:有与父接口同名的常量或相同的方法,则父接口中的常量被隐藏,方法被覆盖
3.接口继承举例
interface interfaceA{
int PROP_A = 5;//public static final int
void testA();//public abstract void
}
interface interfaceB{
int PROP_B = 6;
void testB();
}
interface interfaceC extends interfaceA,interfaceB{
int PROP_C = 7;
void testC();
}
public class interfaceinherit {
public static void main(String[] args) {
System.out.println(interfaceC.PROP_A);
//因为接口的常量都是默认public static final修饰的
//都是静态常量所以这里接口名.常量名是合法的
System.out.println(interfaceC.PROP_B);
System.out.println(interfaceC.PROP_C);
}
}
继承了父接口中的常量
注意:接口可以看成特殊的类,一个java源程序中只能有一个公共接口(public接口的数量:0~1个)
在一个java源程序中,不管有多少个接口,多少类,只能有一个被public所修饰
这里的接口都不可以声明为public(就如上代码只有主类是public其他类都不能用public)
在编译时,如上图接口和类都被编译成单独的字节码文件,所以可以看出接口和类是等价的
编程训练
interface Face1
{ double PI=3.14;
abstract double area( ); }
interface Face2
{ abstract void setColor(String c); }
interface Face3 【代码1】//继承Face1和Face2接口
{【代码2】}//定义无返回值的抽象方法volume()
public class Cylinder 【代码3】//实现Face3接口
{
private double radius;
private int height;
protected String color;
public Cylinder(double r, int h)
{ radius=r; height=h; }
【代码4】//实现area()方法,求解圆柱底面积
【代码5】//实现setColor()方法,输出颜色
【代码6】//实现volume()方法,求解并输出圆柱体积
public static void main(String[] args)
{ Cylinder volu=new Cylinder(3.0,2);
volu.setColor("红色");
volu.volume();
}
}
答案.
interface Face1 {
double PI = 3.14;
abstract double area();
}
interface Face2 {
abstract void setColor(String c);
}
interface Face3 extends Face1, Face2//继承Face1和Face2接口
{
abstract void volume();
}//定义无返回值的抽象方法volume()
public class Cylinder implements Face3{//实现Face3接口
private double radius;
private int height;
protected String color;
public Cylinder(double r, int h) {
radius = r;
height = h;
}
public double area() {
return radius * radius * PI;
}//实现area()方法,求解圆柱底面积
public void setColor(String color) {
System.out.println("颜色是:" + color);
}//实现setColor()方法,输出颜色
public void volume() {
System.out.println("体积:" + area() * height);
}// 实现volume()方法,求解并输出圆柱体积
public static void main(String[] args) {
Cylinder volu = new Cylinder(3.0, 2);
volu.setColor("红色");
volu.volume();
}
}