くだらないタイトルで申し訳ありませんが、Java の質問に対するより良いバージョンを思いつきませんでした。現在、Java バージョン: 1.6.0_18 および Netbeans バージョン: 6.8 を使用しています。
それでは質問です。
私が行ったことは、保護されたintプロパティを1つだけ持つクラスを作成し、次にintプロパティを特定の値に設定するパブリックメソッドを作成しました。次に、そのクラスのオブジェクトを作成し、そのパブリック メソッドを使用して int プロパティを 5 に設定しました。このオブジェクトを取得して保護された int プロパティを公開する別のクラスを作成するには、あなたの助けが必要です。
これを行うと考えられる方法は、そのクラスを継承するサブクラスを作成してから、スーパークラスの int プロパティを取得するメソッドを作成することでした。int プロパティを取得するコードの作成には成功しましたが、この新しいサブクラスを使用してスーパー クラスのオブジェクトを参照する方法がわかりません。
これまでに私が持っている2つのクラスは次のとおりです。
パブリッククラスA { 保護された int iNumber; public void setNumber ( int aNumber ) { iNumber = aNumber; } }
public class B は A を拡張します { public int getNumber() { super.iNumber を返します。 } }
「A」のオブジェクトを作成し、そのメソッドを使用して、次のようにプロパティを 5 に設定しました。
objA = 新しい A(); objA.setNumber ( 5 );
ここで、「B」のオブジェクトを作成して、「objA」のプロパティに格納されている int を出力したいと考えています。私はこのコードを実行しようとしました:
B objB = (B) objA; String aNumber_String = String.valueOf( objB.getNumber() ); System.out.println( aNumber_String );
しかし、最初の行に「java.lang.ClassCastException」というエラーが表示されました
B objB = (B) objA;
とにかく私がやろうとしていることはありますか?
PSクラスAを編集したくないので(選択の余地がない限り)、ゲッターメソッドを与えることでこのアイデアを機能させたいと思っています。
PPSまた、プロパティを非公開にして公開セッター/ゲッターメソッドを使用するのではなく、公開するのが「悪い」考えであることは知っていますが、私はこの方法が好きです:)。
編集:コードタグを追加