Извините за дрянной заголовок, мне не удалось придумать лучшую версию для моего вопроса о Java. Сейчас я использую версию Java: 1.6.0_18 и версию Netbeans: 6.8.
Теперь вопрос.
Что я сделал, так это создал класс только с одним защищенным свойством int, а затем я создал общедоступный метод для установки свойства int на заданное значение. Затем я создал объект этого класса и использовал указанный общедоступный метод, чтобы установить для свойства int значение 5. Теперь мне нужна ваша помощь, чтобы создать другой класс, который возьмет указанный объект и выставит его защищенное свойство int.
Я мог подумать об этом, создав подкласс, чтобы наследовать указанный класс, а затем создать метод для получения свойства int суперкласса. Мне удалось создать код для получения свойства int, но теперь я не могу понять, как использовать этот новый подкласс для ссылки на объект суперкласса.
Вот 2 класса, которые у меня есть до сих пор:
public class A { protected int iNumber; public void setNumber ( int aNumber ) { iNumber = aNumber; } }
public class B extends A { public int getNumber() { return super.iNumber; } }
Я создал объект «A» и использовал его метод, чтобы установить его свойство равным 5, например:
A objA = new A(); objA.setNumber ( 5 );
Теперь я хочу создать объект «B» для вывода int, хранящегося в свойстве «objA». Я пытался запустить этот код:
B objB = (B) objA; String aNumber_String = String.valueOf( objB.getNumber() ); System.out.println( aNumber_String );
but I got the error: "java.lang.ClassCastException" on the first line
B objB = (B) objA;
Пожалуйста, есть ли способ сделать то, что я пытаюсь сделать?
P.S. Я надеюсь, что эта идея сработает, потому что я не хочу редактировать класс A (если у меня нет выбора), предоставляя ему метод получения.
PPS Также я знаю, что это «плохая» идея — выставлять свойство вместо того, чтобы делать его приватным и использовать общедоступные методы установки/получения, но мне это нравится :).
Изменить: добавлены теги кода