2017-06-08 11 views
-1

のJava 8でのこのコードの違いは何ですか:Javaの静的メソッド

public class Hello { 
    public static void sayHello() { 
     System.out.println("ghasedak.Hello !!!"); 
    } 
} 

と、この:

この

public class MainClass { 
    public static void main(String[] args) { 
      Hello.sayHello(); //for function 
      Hello.sayHello(); //for class 
    } 
} 

public interface Hello { 
    public static void sayHello() { 
     System.out.println("ghasedak.Hello !!!"); 
    } 
} 

これはメインのクラスです

+1

あなたはJavaがインタフェースにメソッドの実装を可能にすることを、よろしいですか? –

+1

2番目の実装はまったくコンパイルされませんでした。 –

+0

違いは、1つのメソッドがクラスにあり、もう1つのメソッドがインターフェイスにあることです。クラス/インターフェースは、基本的に一種の名前空間であり、そのメソッドはその名前空間内のもの(つまり、他の静的メソッドやフィールド)にアクセスできます。 – Thomas

答えて

0

Java 8では、今ではdefiインターフェイスのneメソッド。技術的には同じです。インターフェイスとの違いは、まだインスタンス化できません。したがって、それらのメソッドだけを使用できます。ここで

がリンクである:私はインターフェイスが言ったようのでhttps://en.wikipedia.org/wiki/Interface_(Java)

それが話すのインターフェイスは、あなたのコードでは

のJava 8で、今どのように相互作用するかについて、それはまだインタフェースクラスメソッドの上にHelloクラスのメソッドを呼び出す必要がありますインスタンス化することはできません。

0

2つの間に違いはありません。

最初の例はクラスで実装された静的メソッドを示し、2番目の例はインターフェイスで実装された静的メソッドを示しています。 2番目の例は、JDK 7以降を使用するとコンパイルされません。これは、他の人が既に述べたように、インタフェースでの静的メソッドのサポートはJava 8でのみ追加されているからです。Hereは非常に便利なStackOverflowの記事です。 inインターフェイスがJava 8で追加されました。

クラスまたはインターフェイスで静的メソッド(ユーティリティメソッド)を保持するかどうかは、状況によって異なります。例えば。共通の基本クラスを拡張せずに共通のインターフェースを実装する一連のクラスに新しい共通メソッドを追加する場合は、共通の基本クラスがないため、共通のメソッドをインターフェースに追加することができます。

0

私は2つの違いがあると思います:
1)インターフェイスは1つの機能しか持つことができません。
2)重要:インターフェイスはクラスではないので、静的ブロックしていない:
ビューこのコード:

public class Hello { 
    static { 
     System.out.println("Ok"); 
    } 
    public static void sayHello() { 
     System.out.println("ghasedak.Hello !!!"); 
    } 
} 

このブロックの実行クラスを呼び出すとき。
これは機能インターフェイスでは実行できません。 (intefacesはこのブロックを持っていない)
悪い英語のため申し訳ありません

関連する問題