抽象类和接口的区别
一:总述
1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。
2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现。
3 另外,一个类可以实现多个接口,但是不能继承多个类。
二:例子
class A{ } interface M extends N,L{ } interface N{ } interface L{ } public interface InterfaceTest { public final int n=10;//默认变量是public final final A a =null;//基本数据类型和引用都一样 //不能用private,protect修饰 public abstract void a();//所有方法都是由public abstract修饰 //void b(){} 报错,接口里的方法不能有方法体,也不能有{},只能有(); // final void b(); // 注意,抽象方法不能加final。因为final方法不能被重写。 //但如果抽象方法不被重写那就没有意义了,因为他根本没有代码体。 }
public abstract class AbstractTest { public final int n=10;//变量并没有被pulic和final修饰,只是一般的成员变量 public final A a=null; //抽象方法可以有具体的方法 private void a(){} //抽象方法没有方法体 abstract void b(); //private abstract void B();//报错,组合非法 // 因为private修饰的方法无法被子类重写,所以和final一样,使抽象方法无法被实现。 }
抽象方法可以被实例化
public abstract class B { B(){ System.out.println("B被初始化了"); } } class C extends B{ C(){ super(); System.out.println("C被初始化了"); } } //注意:先初始化B,然后初始化C,C会调用父类的构造方法
1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。
2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现。
3 另外,一个类可以实现多个接口,但是不能继承多个类。