天天看點

java中的抽象類和接口

抽象類、抽象方法(abstract抽象類)

//繼承了抽象類的子類,都必須重寫(實作)它的所有 抽象方法(一般方法不用) //除非子類也是抽象類,那就由它的子子類重寫(實作)

 //abstract抽象類
 //繼承了抽象類的子類,都必須重寫(實作)它的所有 抽象方法(一般方法不用)
 //除非子類也是抽象類,那就由它的子子類重寫(實作)
       
public abstract class Action {
     
     public abstract void doSomething(); //抽象方法
     
     public void test(){
         
     };
 }      

  

package com.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、定義一些方法,讓不同的人實作

3、public abstract

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中是單繼承的。  但抽象類中除了可以寫抽象方法外,還可以寫普通方法。

本人也正處于學習階段,這是本人的一些學習筆記和了解,不正确的地方還請了解和指正。