直接Javaクラスに1つだけの親を持つことができますが、複数のインタフェースを実装することができます。
1 パッケージjavaKeyTechnology;
2 / **
3 * Javaの単一継承、複数のインターフェース。
4 *クラスは一つだけ直接の親を持つことができますが、同時に複数のインターフェースを実装することができます。
5 * /
6 クラスFATH {
7。 INT 年齢;
8 FATH(INT 年齢){
9。 この .age = 年齢;
10 のSystem.out.println( "I AM父" );
11 }
12である }
13である
14 インターフェースと同様{ // 自身インタフェース修飾子は、パブリックまたはデフォルトのかもしれ
15 のボイド()等; //いずれの場合においても、デフォルトのインタフェース方法が公開されているので、ここで明示的に書き出されていない、直接戻り値書き込む
16 }
17
18である 界面嫌い{
19。 ボイドdislike1();
20は、 空隙(dislike2);
21れる }
22は、
23であり、 公衆 クラス息子は拡張 FATHを実装と同様に、嫌い{ // すべてのメソッドは、そうでない子が抽象的で、すべてのインターフェースが宣言実装しなければならないとオブジェクトインスタンス化することはできません
24 ;文字列名
25 公共の息子(文字列名、int型年齢){
26である スーパーを(年齢); // 親クラスのデフォルトコンストラクタではありません
27 この .nameの= 名前;
28 }
29 公共 のボイドのように(){ // 但在实现时必须写上のパブリック
30 のSystem.out.println(+ "喫煙のような父の" 年齢を)。
31 }
32
33 公共 ボイドdislike1(){
34 のSystem.out.println( "父嫌い読み取り" )。
35 }
36 公共 ボイドdislike2(){
37 のSystem.out.println( "父嫌い食べます" )。
38 }
39 公共 静的 ボイドメイン(文字列[]引数){
40 ソンE =新しい息子( "ヤン"、45 );
41 のSystem.out.println( "年齢:" + e.age + ";名:" + e.name)。
42 e.like()。
43 e.dislike1()。
44 e.dislike2()。
45 }
46 }
いくつかの注意が必要になります。
1.連続、サブクラスのコンストラクタの最初の行は、スーパーで親クラスのコンストラクタを呼び出す必要がありますので、親クラスのコンストラクタの引数のコンストラクタがあるので、()。
しかし、親は引数のないコンストラクタです(暗黙のデフォルトパラメータを任意に定義されていないとはパラメータを示さなかった)、スーパー()を必要としない場合。
それは非プライベートメンバ変数とコンストラクタと同じ名前の親クラス/サブクラス他のメソッドのローカル変数であり、それは地域に呼ばれなければならない場合には、スーパーを使用します。変数の変数名の呼び出し、または直接呼び出すことができます(これは同じです使い方)
2.インターフェイス、修飾子を定義する場合、インタフェース自体は書き込まないパブリックまたはデフォルトであるが、方法は、インタフェースで宣言は、デフォルトではパブリックであり、デフォルトの変数パブリック静的ボイド(実際に点灯しています)。そのため、インタフェースに、これらの修飾子は書きません
インターフェイスメソッドが達成したときに、クラスのインターフェイスを実装する場合3.しかし、公共宣言する必要があります。
4.全てのすべてのインターフェース方法は、請求項のようなものを達成しなければならない(この方法は、複数のインタフェースを持つことができる)、抽象缶と結合された抽象なしでインスタンス化できない場合はそうでないクラスは、抽象的なエラーを与えます。