お世話になります。ただいまjavaの勉強中なのですが、equals()のオーバーライドについて質問がございます。
下記コードのSub.javaで変数nameを対象としたequals()のオーバーライドを設定していますが、どうしてもSub.javaとSub2.javaの変数nameの値を『同じ!』と出力することができません。どこが間違っているかご教授いただけると幸いです。
どうぞ宜しくお願い致します。
java
1package object; 2 3public class Main{ 4 5 public static void main( String[] args ){ 6 Sub s1 = new Sub(); 7 Sub2 s2 = new Sub2(); 8 if( s1.equals( s2 ) ) { 9 System.out.println( "同じ!" ); 10 } else { 11 System.out.println( "違う!!" ); 12 } 13 } 14 15} 16
java
1package object; 2 3public class Sub{ 4 String name = "てやんでぃ"; 5 6 @Override 7 // objは比較対象のクラス 8 public boolean equals( Object obj ){ 9 if( this == obj ) { 10 return true; 11 } 12 if( obj instanceof Sub ) { 13 // objをSubの方に入れられればダウンキャストでSub型変数pに代入 14 Sub p = ( Sub ) obj; 15 if( this.name.equals( p.name ) ) { 16 return true; 17 } 18 } 19 return false; 20 21 } 22} 23 24
java
1package object; 2 3public class Sub2{ 4 String name = "てやんでぃ"; 5 6} 7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/16 04:17