1. 程式人生 > 實用技巧 >遞迴:求所需的快遞員最少位數

遞迴:求所需的快遞員最少位數

宣告:

public abstract class Action {
}

abstract關鍵字

只定方法的約束,由某位天使幫我們實現。

抽象方法

只有方法頭,沒有方法體

public abstract void add(int a,int b);

抽象類的實現

public class A extends Action {}

繼承了抽象類的子類,必須實現所有的抽象類中的抽象方法,除非繼承抽象類的也是一個抽象類

package com.xuyifan.demo09;

/**
 * @author xyf
 * @create 2020-08-17-13:31
 */
public class
A extends Action { @Override public void add(int a, int b) { } }

extends,JAVA裡沒有多繼承的,只有單繼承,存在侷限性

所以,JAVA通過了“介面”來實現多繼承特性,“介面”也是最常使用的

  1. 抽象類不能new 只能通過自己的子類來實現
  2. 抽象類中可以有普通方法,但是抽象方法只能在抽象類中,也就是說只要有一個抽象方法,就必須在抽象類裡

那麼,抽象類中有沒有構造器呢?

檢視反編譯檔案

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler) // package com.xuyifan.demo09; public class A extends Action { public A() { } public int add(int a, int b) { return a + b; } public static void main(String[] args) { A a = new A(); System.out.println(a.add(10, 20)); } }
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.xuyifan.demo09;

public abstract class Action {
    public Action() {
    }

    public abstract int add(int var1, int var2);
}

所以,抽象類是有構造器的,因為抽象類是可以有非抽象方法的