抽象类:抽象类中有抽象方法,普通方法,常量,变量,构造方法,全局常量;使用abstract定义;子类通过extends继承抽象类;一个子类只能继承一个抽象类;一个抽象类可以实现多个接口;模板设计。
接口:接口中有抽象方法,全局变量;使用interface定义;子类通过implement实现接口;一个子类可以同时实现多个接口;一个接口不能继承一个抽象类,只能实现多个接口;一个接口中可以包含多个抽象类;工厂设计,代理设计。
抽象类和接口的共同点:两者一起操作可以完成适配器设计,都可以通过对象的多态性,通过子类进行对象的实例化。
优先使用接口。
一个抽象类中允许包含一个接口。
abstract class A{
public abstract void fun() ;
interface B{ // 内部接口
public void print() ;
}
};
class X extends A{
public void fun(){
System.out.println("****************") ;
}
class Y implements B{
public void print(){
System.out.println("===================") ;
}
};
};
public class TestDemo01{
public static void main(String args[]){
A a = new X() ;
a.fun() ;
A.B b = new X().new Y() ; ////
b.print() ;
}
};
反之,
interface A{
public void fun() ;
abstract class B{ // 内部抽象类
public abstract void print() ;
}
};
class X implements A{
public void fun(){
System.out.println("****************") ;
}
class Y extends B{
public void print(){
System.out.println("===================") ;
}
};
};
public class TestDemo02{
public static void main(String args[]){
A a = new X() ;
a.fun() ;
A.B b = new X().new Y() ;
b.print() ;
}
};