1. 程式人生 > 其它 >Java知識點總結【6】抽象類和介面

Java知識點總結【6】抽象類和介面

技術標籤:JAVA抽象類java介面

1.抽象類

1)什麼是抽象類

抽象的反義詞是具體,越不具體,就越抽象。abstract修飾的類就叫做抽象類,除了不能被例項化之外!其他語法規則和普通類都一樣。

abstract關鍵字存在的意義,就是讓程式設計師明確的告訴編譯器,這個類是一個抽象的類,不應該進行例項化,於是編譯器就要做好相關檢查工作。

2)什麼是抽象方法

  • 給方法前頭加上 abstract 此時這就是一個抽象方法了.
  • 抽象方法不需要方法體.
  • 抽象方法只能在抽象類中存在(也可以在介面中存在), 不能在普通的類中存在.
  • 抽象方法存在的意義就是為了讓子類進行重寫.

3)舉例

abstract class Animal{ //抽象類
    public abstract void eat(); //抽象方法
}

public class Blog {
    public static void main(String[] args) {
        Animal animal=new Animal();
    }
}

執行結果:

2.介面

1)什麼是介面

我們知道,類之間只能單繼承。為了實現類似“多繼承”的效果,所以就引入了介面。介面是抽象類的更近一步,比抽象類還抽象。抽象類只是不能例項化,但是其他各個方面都和普通類差不多,介面就更抽象了,不光不能例項化,同時也不具備類的各種特性。

命名:介面的命名一般以大寫字母I作為字首,一般使用形容詞進行命名。表示的語義:一個類具有XXX特性

2)舉例

①介面中只能放抽象方法,不能放普通方法(下圖中的波浪線~)

介面中的抽象方法可以不寫public abstract關鍵字,寫或者不寫,都表示抽象的共有的方法~

但是抽象類中的抽象方法必須得寫abstract關鍵字,抽象類中除了可以放抽象方法還可以放普通方法,所以不寫得話就表示一個普通方法,就得加上方法體了。

②介面中只能放public static final修飾的屬性,不能放普通的屬性

interface IEating {
    public static final String food = "fish";
}

介面和類之間不能繼承,只能是類實現了(implements)某個介面。介面和介面之間可以繼承。

Animal類

public class Animal {
    
}

IEating介面

public interface IEating {
    public static final String food = "fish";
    public abstract void eat();
}

IJump介面

public interface IJump {
    void jump();
}

Cat類繼承自Animal類,實現了IEating,IJump介面

public class Cat extends Animal implements IEating,IJump{
    @Override
    public void eat() {

    }
    @Override
    public void jump() {

    }

}

注意:

  • 實現的類必須重寫介面中所有的方法。
  • 實現多個介面,介面之前使用逗號分割。

3.抽象類和介面的對比

  • 抽象類和普通類差不多,只是不能例項化。而介面和普通的類之間相去甚遠(包含的屬性,方法,和其它類的關係)
  • 一個類只能繼承自一個抽象類,但是一個類可以同時實現多個介面。

為啥要發明介面這樣的語法?

解決Java中不能多繼承的問題。Java中的繼承是單繼承,有些場景下多繼承是有用的。Java中可以通過繼承一個類,實現多個介面的方式來完成類似於多繼承的效果。