質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

インターフェース

インターフェイスという用語はハードウェア・ソフトウェアの両方に使うことができます。 一般的に、インターフェイスは内部処理の詳細を見せないように設定されます。オブジェクト指向プログラミングにおいて、インターフェイスはabstractクラスとして定義されます。

Q&A

1回答

267閲覧

Java インターフェースについて

calpas

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

インターフェース

インターフェイスという用語はハードウェア・ソフトウェアの両方に使うことができます。 一般的に、インターフェイスは内部処理の詳細を見せないように設定されます。オブジェクト指向プログラミングにおいて、インターフェイスはabstractクラスとして定義されます。

0グッド

1クリップ

投稿2018/06/11 15:52

Javaのインターフェースについて

Javaのインターフェースについていくつか気になることがあるのでもしよろしければ
教えてください。

1.クラスでは多重継承できなくて、インターフェース同士の多重継承ができる理由。
↓のようなもの

interface B{ void B(); } interface C{ void C(); } interface A extends B,C{ void A(); } class Sample implements A{ public void A(){System.out.println("A")} public void B(){System.out.println("B")} public void C(){System.out.println("C")} }

2.多重継承したインターフェースを実装する場合と同時実装の違い
1.の文と比べてSampleクラスが何を実装しているか一目でわかる気がするので1.の文のメリットがわからない

interface B{ void B(); } interface C{ void C(); } interface A{ void A(); } class Sample implements A,B,C{ public void A(){System.out.println("A")} public void B(){System.out.println("B")} public void C(){System.out.println("C")} }

3.インターフェースの多重継承でのデメリット?として
「多重継承でつながっているインタフェース内で、一つの変数名が複数箇所で定義されているとコンパイルエラーになります。」
と記載してあるサイトがあり、Java8で試してみるとコンパイルエラーが起きなかったのですがJava7ではコンパイルエラーになるのでしょうか?
なぜJava8では実行できるのでしょうか?

どなたかよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2018/06/11 18:23

3がちょっと意味が分からないので、具体的にコードを記載してください。
guest

回答1

0

A-1/A-2.
言語使用
実装種別の違いです。比較対象になりません。

A-3.
インタフェースで重複エラーになるのは 二つとも同じ定義(名前、引数)の default メソッドが実装されている場合に実装クラスで実装されてない場合です

public interface A { default void method(){}; }
public interface B { default void method(){}; }

とインタフェースを二つ定義して

public class C extends A,B { }

とクラスを作成するとどっちのインタフェースの定義を利用するか判断つかないからコンパイルエラーになる

投稿2018/06/11 22:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問