ナニー、javaはインターフェースの中で非抽象的な方法を実現できますか?
7172 ワード
ネネさん、インターフェースで例示的な方法を定義できますか?
ネネさん、インターフェースで静的な方法も定義できますか?
そうです。Java 8には多くの新しい特性が追加されています。ここにはインターフェースに方法と変数を追加することができます。
まずコードを見に来ました。
コードの中で、以下のいくつかの違いを発見できます。
1、インターフェースに静的な方法を直接追加することができます。
この静的方法はインターフェースとして機能している(盗難防止接続:本論文の最初の送信はhttp://www.cnblogs.com/jilodream/ )の種類の方法は、直接使用できます。何かの実現クラスに頼る必要はありません。
2、インターフェースでは、直接的に非抽象的な方法を追加することができる。
例示的な方法の説明においては、defaultキーワード修飾を追加する必要があるので、この方法はデフォルト方法とも呼ばれる。彼はインターフェースの持参方法です。インターフェースが実装されると、インスタンスはこれらのデフォルトの方法を直接使用してもよく、デフォルトの方法に書き換えが必要な場合は、直接書き換えても良い。
この2つの新しい特性は、java 8以前のバージョンに対して、質的な変化があると言える。
引用:
方法のインターフェースを増やすことができます。抽象的なタイプに変わり始めました。Javaクラスは、デフォルトの方法を持つインターフェースを複数実現した後、サイドから現れる影のような多重継承を実現しています。
注意:2つのインターフェースのデフォルト方法が重複して説明されている場合、この方法を実装方法で書き換える必要があります。そうでなければ、jvmは実行時、どのインターフェースを使用すべきかを確認できません。これは今回新しく導入された特性の一つの弊害と言えるはずです。使用するのがあるインターフェースのデフォルト方法を指定する場合、採用できます。
の形式
では、javaはなぜデフォルトの方法を導入しますか?インターフェースに方法を追加したいなら、直接抽象類を使えばいいです。なぜ既存の約束を破ったのですか?
主な原因は以下の通りだと思います。
インターフェースに向かってプログラミングする過程で、既存のインターフェースには同じ方法を追加する必要があることが分かりました。
1)インターフェースを抽象的なタイプに変え、(盗難防止接続:本文の最初の発http://www.cnblogs.com/jilodream/ )抽象類にこの方法を追加する
2)インターフェースにこの抽象的な方法を追加し、各インターフェースの実装クラスに同じ実現方法を追加します。
どちらの方法を選ぶにせよ、既存のコードに対して非常に大きな変更が必要です。しかし、デフォルトの方法を使用して、ドッキングのインターフェースをデフォルトでいくつかの機能を実現すれば、仮定の問題をうまく解決できます。
ネネさん、インターフェースで静的な方法も定義できますか?
そうです。Java 8には多くの新しい特性が追加されています。ここにはインターフェースに方法と変数を追加することができます。
まずコードを見に来ました。
1 public interface SourceInterface
2 {
3 int a = 5;
4 int b = 10;
5
6 public static int add()
7 {
8 return a + b;
9 }
10
11 public static void reset()
12 {
13 // do sth
14 }
15
16 public default int f1()
17 {
18 return a;
19 }
20
21 public default void f2()
22 {
23 // do sth
24 }
25 }
26
27 class learnCode
28 {
29 public void userInterface()
30 {
31 int xx = SourceLearning.add();
32 SourceLearning.reset();
33 SourceLearning instance = new SourceLearning()
34 {
35 @Override
36 public void f2()
37 {
38 // do sth 、
39 }
40 };
41 instance.f1();
42 instance.f2();
43 //int y=instance.add();
44 }
45 }
コードの中で、以下のいくつかの違いを発見できます。
1、インターフェースに静的な方法を直接追加することができます。
この静的方法はインターフェースとして機能している(盗難防止接続:本論文の最初の送信はhttp://www.cnblogs.com/jilodream/ )の種類の方法は、直接使用できます。何かの実現クラスに頼る必要はありません。
2、インターフェースでは、直接的に非抽象的な方法を追加することができる。
例示的な方法の説明においては、defaultキーワード修飾を追加する必要があるので、この方法はデフォルト方法とも呼ばれる。彼はインターフェースの持参方法です。インターフェースが実装されると、インスタンスはこれらのデフォルトの方法を直接使用してもよく、デフォルトの方法に書き換えが必要な場合は、直接書き換えても良い。
この2つの新しい特性は、java 8以前のバージョンに対して、質的な変化があると言える。
引用:
方法のインターフェースを増やすことができます。抽象的なタイプに変わり始めました。Javaクラスは、デフォルトの方法を持つインターフェースを複数実現した後、サイドから現れる影のような多重継承を実現しています。
注意:2つのインターフェースのデフォルト方法が重複して説明されている場合、この方法を実装方法で書き換える必要があります。そうでなければ、jvmは実行時、どのインターフェースを使用すべきかを確認できません。これは今回新しく導入された特性の一つの弊害と言えるはずです。使用するのがあるインターフェースのデフォルト方法を指定する場合、採用できます。
1 @Override
2 public void f2()
3 {
4 SourceLearning.super.f2();
5 }
の形式
では、javaはなぜデフォルトの方法を導入しますか?インターフェースに方法を追加したいなら、直接抽象類を使えばいいです。なぜ既存の約束を破ったのですか?
主な原因は以下の通りだと思います。
インターフェースに向かってプログラミングする過程で、既存のインターフェースには同じ方法を追加する必要があることが分かりました。
1)インターフェースを抽象的なタイプに変え、(盗難防止接続:本文の最初の発http://www.cnblogs.com/jilodream/ )抽象類にこの方法を追加する
2)インターフェースにこの抽象的な方法を追加し、各インターフェースの実装クラスに同じ実現方法を追加します。
どちらの方法を選ぶにせよ、既存のコードに対して非常に大きな変更が必要です。しかし、デフォルトの方法を使用して、ドッキングのインターフェースをデフォルトでいくつかの機能を実現すれば、仮定の問題をうまく解決できます。