抽象类只能被单继承,而接口可以被多继承。
一个类中可以继承单个抽象类和多个接口 。
package java_10; public class java_10_3 { public static void main(String[] args) { // TODO 自动生成的方法存根 D3 d3 = new D3(); d3.meth_Abtract_IA3(); d3.meth_Abtract_IB3(); E3 e3=new E3(); e3.meth_Abtract(); e3.meth_Abtract_IA3(); F3 f3=new F3(); f3.meth_Abtract(); f3.meth_Abtract_IA3(); f3.meth_Abtract_IB3(); } } // 抽象类中可以有非抽象成员,而接口不能有非抽象的成员 abstract class A3 { public abstract void meth_Abtract(); public void meth_UnAbtract() { } } // 先定义两个接口,再下面继承两个接口 interface IA3{ public abstract void meth_Abtract_IA3(); //public void Meth_Test(){} //不能有非抽象的成员 } interface IB3 { public abstract void meth_Abtract_IB3(); } // 抽象类和接口的继承 关键字不同,extends,implements class C3 extends A3 { // 继承 A3抽象类,只能单继承 public void meth_Abtract() { } } class D3 implements IA3, IB3 { // 继承 IA3,IB3 接口;接口可以多继承 @Override // 每继承接口都要覆盖,实现方法 public void meth_Abtract_IA3() { // TODO 自动生成的方法存根 System.out.println("class D3 继承IA3接口"); } @Override public void meth_Abtract_IB3() { // TODO 自动生成的方法存根 System.out.println("class D3 继承IB3接口"+"\n------------------------"); } } class E3 extends A3 implements IA3 { public void meth_Abtract() { System.out.println("class E3 继承A3抽象类"); } public void meth_Abtract_IA3() { System.out.println("class E3 继承IA3接口"+"\n------------------------"); } } class F3 extends A3// F3 //抽象类的继承只支持单继承,而接口允许多继承 implements IA3, IB3 { public void meth_Abtract() { System.out.println("class F3 继承A3抽象类"); } @Override public void meth_UnAbtract() { // TODO 自动生成的方法存根 System.out.println("重写A3里面的非抽象类方法:public void meth_UnAbtract()"); super.meth_UnAbtract(); } public void meth_Abtract_IA3() { System.out.println("class F3 继承IA3接口"); } public void meth_Abtract_IB3() { System.out.println("class F3 继承IB3接口"); } }