Java教程28—Java中的抽象方法
阿新 • • 發佈:2018-12-09
沒有主體的方法(沒有實現)被稱為抽象方法。 方法必須始終在抽象類中宣告,或者換句話說,如果類具有抽象方法,則應該將其宣告為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/