[解決済み] インターフェイスには正しいメソッドを持つ以上のものがあるのか
2022-04-26 15:46:13
質問
このようなインターフェイスがあるとします。
public interface IBox
{
public void setSize(int size);
public int getSize();
public int getArea();
//...and so on
}
そして、それを実装したクラスがあるんです。
public class Rectangle implements IBox
{
private int size;
//Methods here
}
IBoxというインターフェースを使いたいのですが、実際にはインスタンスを作成することができません。
public static void main(String args[])
{
Ibox myBox=new Ibox();
}
ということですよね?だから実際にこうしないといけないんです。
public static void main(String args[])
{
Rectangle myBox=new Rectangle();
}
もしそうなら、インターフェイスの唯一の目的は、インターフェイスを実装するクラスが、インターフェイスで記述された正しいメソッドを持っていることを確認することなのでしょうか?それとも、それ以外の用途があるのでしょうか?
どのように解決するのですか?
インターフェイスは、コードをより柔軟にするための手段です。何をするかというと、こうです。
Ibox myBox=new Rectangle();
そして、後で別の種類のボックスを使いたくなったら(もしかしたら、もっと良い種類のボックスを持つ別のライブラリがあるかもしれない)、コードを次のように書き換えます。
Ibox myBox=new OtherKindOfBox();
慣れてくれば、素晴らしい(実は不可欠な)仕事のやり方であることに気づくはずです。
もうひとつの理由は、たとえば、ボックスのリストを作成してそれぞれに対して何らかの操作を行いたいが、そのリストには異なる種類のボックスが含まれるようにしたい場合です。それぞれのボックスに対して、次のようなことができます。
myBox.close()
(IBox に close() メソッドがあると仮定して) myBox の実際のクラスは、反復のどのボックスにいるかによって変わるにもかかわらず。
関連
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
サーブレットクラスのインスタンス化エラーの解決法
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
Javaエラーメッセージがenclosingクラスでない
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] Javaインターフェースでスタティックメソッドを定義できないのはなぜですか?
-
[解決済み] なぜC#は静的メソッドにインターフェイスを実装できないのか?
-
[解決済み] javaのinterfaceと@interfaceの違いは何ですか?
-
[解決済み] Java 8のインターフェイスメソッドで "final "が使えないのはなぜですか?
-
[解決済み】C#の多重継承について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Spring Boot による HTTPS アクセスの設定
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
eclipse の実行時に java 仮想マシンが見つからなかった
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
java 例外。Javaツールの初期化
-
JSPで「リストが型解決できない!」の解決方法
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
ローカルリソースのロードが許可されていない場合の解決策