遞迴:求所需的快遞員最少位數
阿新 • • 發佈:2020-08-17
宣告:
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 classA extends Action { @Override public void add(int a, int b) { } }
extends,JAVA裡沒有多繼承的,只有單繼承,存在侷限性
所以,JAVA通過了“介面”來實現多繼承特性,“介面”也是最常使用的
- 抽象類不能new 只能通過自己的子類來實現
- 抽象類中可以有普通方法,但是抽象方法只能在抽象類中,也就是說只要有一個抽象方法,就必須在抽象類裡
那麼,抽象類中有沒有構造器呢?
檢視反編譯檔案
// // 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); }
所以,抽象類是有構造器的,因為抽象類是可以有非抽象方法的