java中的抽象類和介面
抽象類、抽象方法(abstract抽象類)
//繼承了抽象類的子類,都必須重寫(實現)它的所有 抽象方法(一般方法不用) //除非子類也是抽象類,那就由它的子子類重寫(實現)
//abstract抽象類
//繼承了抽象類的子類,都必須重寫(實現)它的所有 抽象方法(一般方法不用)
//除非子類也是抽象類,那就由它的子子類重寫(實現)
public abstract class Action { public abstract void doSomething(); //抽象方法 public void test(){ }; }
packagecom.basics.demo4; public class A extends Action { //重寫抽象類裡面的抽象方法 @Override public void doSomething() { } }
//1、不能new這個抽象類,只能靠子類去實現它;約束
//2、抽象類中可以寫普通的方法 //
3、抽象方法必須在抽象類中
介面(interface)
//介面都會與實現類 public interface UserService { //介面中的所有定義的方法中其實都是抽象的 public abstract//public abstract void add(); //等效於 void add(); //int age = 99; 等效於 //public static final int age = 99; int age = 99; void add(String name); void delete(String name); void update(String name); void query(String name); }
函式式介面
函式式介面就是一個有且僅有一個抽象方法,但是可以有多個非抽象方法的的介面
函式式介面可以被隱式轉換為lambda表示式
實現介面
public class UserServiceImp1 implements UserService,TimeService{ //裡面是介面方法的重寫的方法 //類似可以實現多繼承 , 偽多繼承 }
作用:
1、約束
2、定義一些方法,讓不同的人實現
4、public static final
5、介面不能被例項化,因為介面中沒有構造方法
6、可以實現多個介面
7、必須要重寫介面中的方法
抽象方法特點
abstract修飾符:
1.abstract修飾的類為抽象類,此類不能有物件,(無法對此類進行例項化,說白了就是不能new);
2.abstract修飾的方法為抽象方法,此方法不能有方法體(就是什麼內容不能有);
抽象類的使用特點:
1.抽象類不能有物件,(不能用new此關鍵字來建立抽象類的物件);
2.有抽象方法的類一定是抽象類,但是抽象類中不一定有抽象方法;
3.抽象類中的抽象方法必須在子類中被重寫。
介面特點
介面中的所有定義的方法中其實都是抽象的 public abstract
public abstract void add();
等效於 void add();
int age = 99; 等效於
public static final int age = 99;
介面不能被例項化,因為介面中沒有構造方法
類可以實現多個介面,必須要重寫介面中的方法
至於介面和抽象類的區別:
最明顯的一個區別就是他們的實現:一個是介面,一個是類
介面的實現就是去實現這個介面,而且java中一個類可以實現多個介面。 但接口裡面只能寫介面,不能寫普通方法。
而抽象類必須通過繼承去實現,並且java中是單繼承的。 但抽象類中除了可以寫抽象方法外,還可以寫普通方法。
本人也正處於學習階段,這是本人的一些學習筆記和理解,不正確的地方還請理解和指正。