簡體   English   中英

接口中的公共方法和抽象方法有什么區別?

[英]What's the difference between public method and abstract method in Interface?

考慮以下接口:

public interface MyInterface {

    public void func1();
    public void func2();
    abstract public void func3();

}

和類MyClass:

public class MyClass implements MyInterface{

    @Override
    public void func1() {
        // TODO Auto-generated method stub

    }

    @Override
    public void func2() {
        // TODO Auto-generated method stub

    }

    @Override
    public void func3() {
        // TODO Auto-generated method stub

    }
}

func2()func3()什么區別?

當我想實現MyClass ,我必須同時實現這兩種方法,因此,如果我在接口中編寫publicabstract public似乎沒有什么區別。

謝謝

Java 7及更早版本:

由於所有接口方法都是公共的和“抽象的”,因此沒有區別。 無論是否聲明,這都是隱含的。

Java 8:

適用與Java 7中相同的規則,但是應注意,由於Java 8,只有非默認方法是“抽象的”。 實際上, 默認方法允許被實現。

Java 9:

在Java 9中,我們提供了更大的靈活性,並且還允許使用私有方法

Java語言規范引用

接口主體中的每個方法聲明都是隱式抽象的 ,因此其主體始終由分號(而不是塊)表示。

你問

func2()和func3()有什么區別?

除了它們是不同的方法外,它們的修飾符是相同的。

接口中的公共方法和抽象方法有什么區別?

9.1.1.1。 抽象接口簡而言之……無。 據此,它已經過時了。

在某種程度上,我們正在比較這個問題上的蘋果和橙子。 對於Java語言的新手,首先需要進行一些說明:

接口:

  • 接口包含方法存根。 這些是沒有身體的方法。 這些方法隱式地是“抽象的”,我們不需要顯式地使用修飾符來表示這一點。
  • 就是說, Java 8開始 ,我們現在有了所謂的“ 默認方法” 這些方法是完全實現的方法,確實需要使用default關鍵字進行顯式聲明。

  • 就是說, abstract關鍵字永遠不會在接口上下文中起作用。

抽象方法:

  • 抽象方法屬於抽象類。

  • 抽象類可能包含完全實現的方法以及抽象方法。 但是,一個類中僅一個抽象方法就足以使其成為抽象類-也就是說,該類必須顯式聲明為抽象類。

抽象類是被聲明為抽象的類-它可能包含也可能不包含抽象方法。 抽象類不能實例化,但是可以被子類化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM