给你个代码看看://IA.java public interface IA { public void A1(); public void A2(); } //A.java public class A implements IA { public void A1() { System.out.print("A1"); } public void A2() { System.out.print("A2"); }} //IB.java public interface IB extends IA { public void B1(); public void B2(); } //B.java public class B extends A implements IB { public void B1() { System.out.print("B1"); } public void B2() { System.out.print("B2"); }} //T.java public class T { public static void main(String[] args) { IB b=new B(); //IB c=new A(); 不正确 IA a=new B();//向上转型 a.A1(); //a.B1(); 不正确,因为a虽然是B的实例,但它的类型是IA,IA无此接口。 b.A1();//正确 b.B1(); } }
A是B的父类!啊
所以你的IB其实可以不去继承IA。
B既然继承A,而A是实现了IA的方法的,也就是B天生就实现了IA的方法,那么就只剩下IB的方法靠B自己去实现
类和接口只能用 “实现” implements希望各位大虾能重视基本概念
public interface IA {
public void A1();
public void A2();
}
//A.java
public class A implements IA { public void A1() {
System.out.print("A1");
}
public void A2() {
System.out.print("A2");
}}
//IB.java
public interface IB extends IA { public void B1();
public void B2();
}
//B.java
public class B extends A implements IB { public void B1() {
System.out.print("B1");
}
public void B2() {
System.out.print("B2");
}}
//T.java
public class T {
public static void main(String[] args) {
IB b=new B();
//IB c=new A(); 不正确
IA a=new B();//向上转型
a.A1();
//a.B1(); 不正确,因为a虽然是B的实例,但它的类型是IA,IA无此接口。
b.A1();//正确
b.B1();
}
}
况下,最终得到的都是一个新接口。
通常,我们只能对单独一个类应用extends(扩展)关键字。但由于接口可能由多个其他接口构成,所以在构建一个新接口时,extends 可能引用多个基础接口。
--------------------
似乎回答过这个问题...
==========================================
只要B类的直接超类A中没有abstract的方法,
B类就可以直接实现IB接口中的新方法,IA接口中的方法想实现就实现
就是说通过B类的IB接口可以直接使用以前在A中实现的方法么?
===================================================
可以另外学java先学core java 2 v1,
然后再学<<深入Java虚拟机(原书第2版)>>
学完好,think in java就不用看了。写程序多看看API文档
类和接口只能用 “实现” implements
====================================
interface也可以extends 其他的interface