抽象类只能被单继承,而接口可以被多继承。
一个类中可以继承单个抽象类和多个接口 。
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接口");
}
}