多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Java 中的抽象方法 > 原文: [https://beginnersbook.com/2014/01/abstract-method-with-examples-in-java/](https://beginnersbook.com/2014/01/abstract-method-with-examples-in-java/) 没有主体的方法(没有实现)被称为抽象方法。方法必须始终在抽象类中声明,或者换句话说,如果类具有抽象方法,则应该将其声明为抽象方法。在上一个教程中我们讨论了抽象类,如果你还没有检查过它,请在这里阅读它: [Java 中的抽象类](https://beginnersbook.com/2013/05/java-abstract-class-method/),在阅读本指南之前。 这是一个抽象方法在 java 中的外观: ```java public abstract int myMethod(int n1, int n2); ``` 如你所见,这没有身体。 ## 抽象方法规则 1. 抽象方法没有正文,它们只有如上所示的方法签名。 2. 如果一个类有一个抽象方法,它应该被声明为`abstract`,反之亦然,这意味着一个抽象类不需要一个抽象方法是强制性的。 3. 如果常规类扩展了一个抽象类,那么该类必须实现抽象父类的所有抽象方法,或者它也必须被声明为`abstract`。 ## 示例 1:抽象类中的抽象方法 ```java //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(); } } ``` 输出: ```java 10 26 Method of class Sum ``` ## 例 2:接口中的抽象方法 默认情况下,[接口](https://beginnersbook.com/2013/05/java-interface/)的所有方法都是公共抽象的。您不能在接口中使用具体的(常规方法和正文)方法。 ```java //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)); } } ``` 输出: ```java 21 0 ``` **参考:** [抽象方法 javadoc](https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html)