1. 程式人生 > >Java教程28—Java中的抽象方法

Java教程28—Java中的抽象方法

沒有主體的方法(沒有實現)被稱為抽象方法。 方法必須始終在抽象類中宣告,或者換句話說,如果類具有抽象方法,則應該將其宣告為abstract。

這是抽象方法在java中的形式:

public abstract int myMethod(int n1, int n2);

如你所見,方法沒有方法體。

抽象方法的規則:

  • 抽象方法麼有方法體,只有宣告部分.
  • 如果一個類有一個抽象方法,它應該被宣告為abstract類。反過來就不對了,這意味著一個抽象類不一定要有抽象方法。
  • 如果常規類擴充套件了一個抽象類,那麼該類必須實現抽象父類的所有抽象方法,或者它也必須被宣告為抽象類。

Example 1: 抽象類中的抽象方法

//抽象類
abstract class Sum{
   /* 2個抽象方法
    * 子類必須實現它們
    */
   public abstract int sumOfTwo(int n1, int n2);
   public abstract int sumOfThree(int n1, int n2, int n3);

   //普通方法 
   public void disp(){
       System.out.println("Method of class Sum");
   }
}
//普通類繼承抽象類
class Demo extends Sum{

   /* 如果未提供這2方法的實現
    * 程式將編譯錯誤.
    */
public int sumOfTwo(int num1, int num2){ return num1+num2; } public int sumOfThree(int num1, int num2, int num3){ return num1+num2+num3; } public static void main(String args[]){ Sum obj = new Demo(); System.out.println(obj.sumOfTwo(3, 7)); System.out.println(obj.sumOfThree(4
, 3, 19)); obj.disp(); } } Output: 10 26 Method of class Sum

示例2:介面中的抽象方法 預設情況下,介面的所有方法 都是public抽象。 您不能在介面中使用具體的(有方法體的常規方法)方法。

//介面
interface Multiply{
   //抽象方法
   public abstract int multiplyTwo(int n1, int n2);

   /* 介面中不加 public 和 abstract 也是沒有任何問題的
    * 你不加編譯器也會給你加上的:
    * public abstract multiplyThree(int n1, int n2, int n3);
    */
   int multiplyThree(int n1, int n2, int n3);

   /* 介面中禁止實現方法
    * 下面這個函式會報編譯錯誤
    * public void disp(){
    *    System.out.println("I will give error if u uncomment me");
    * }
    */
}

class Demo implements Multiply{
   public int multiplyTwo(int num1, int num2){
       return num1*num2;
   }
   public int multiplyThree(int num1, int num2, int num3){
       return num1*num2*num3;
   }
   public static void main(String args[]){
       Multiply obj = new Demo();
       System.out.println(obj.multiplyTwo(3, 7));
       System.out.println(obj.multiplyThree(1, 9, 0));
   }
}
Output:

21
0

原文地址:

https://beginnersbook.com/2014/01/abstract-method-with-examples-in-java/