Java 抽象方法

Java 抽象方法,没有主体的方法(没有实现)被称为抽象方法。方法必须始终在抽象类中声明,或者换句话说,如果类具有抽象方法,则应该将其声明为抽象方法。在上一个教程中我们讨论了抽象类,如果你还没有检查过它,请在这里阅读它: Java 中的抽象类,在阅读本指南之前。
这是一个抽象方法在 java 中的外观:

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

如你所见,这没有函数体。

抽象方法规则

  1. 抽象方法没有正文,它们只有如上所示的方法签名。
  2. 如果一个类有一个抽象方法,它应该被声明为abstract,反之亦然,这意味着一个抽象类不需要一个抽象方法是强制性的。
  3. 如果常规类扩展了一个抽象类,那么该类必须实现抽象父类的所有抽象方法,或者它也必须被声明为abstract

示例 1:抽象类中的抽象方法

//abstract class
abstract class Sum{
   /* These two are abstract methods, the child class
    * must implement these methods
    */
   public abstract int sumOfTwo(int n1, int n2);
   public abstract int sumOfThree(int n1, int n2, int n3);

   //Regular method 
   public void disp(){
    System.out.println("Method of class Sum");
   }
}
//Regular class extends abstract class
class Demo extends Sum{

   /* If I don't provide the implementation of these two methods, the
    * program will throw compilation error.
    */
   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();
   }
}

输出:

10
26
Method of class Sum

例 2:接口中的抽象方法

默认情况下,接口的所有方法都是公共抽象的。您不能在接口中使用具体的(常规方法和正文)方法。

//Interface
interface Multiply{
   //abstract methods
   public abstract int multiplyTwo(int n1, int n2);

   /* We need not to mention public and abstract in interface
    * as all the methods in interface are 
    * public and abstract by default so the compiler will
    * treat this as 
    * public abstract multiplyThree(int n1, int n2, int n3);
    */
   int multiplyThree(int n1, int n2, int n3);

   /* Regular (or concrete) methods are not allowed in an interface
    * so if I uncomment this method, you will get compilation error
    * 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));
   }
}

输出:

21
0

参考:

抽象方法 javadoc

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程