Извините за дерьмовый заголовок Я не смог придумать более подходящую версию для моего вопроса о 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 );
но я получил ошибку: "java.lang.ClassCastException" в первой строке
B objB = (B) objA;
Пожалуйста, в любом случае, делать то, что я пытаюсь сделать?
P.S. Я надеюсь, что эта идея сработает, потому что я не хочу редактировать класс A (если у меня нет выбора), предоставив ему метод получения.
P.P.S Также я знаю, что это «плохая» идея выставлять свойство вместо того, чтобы делать его закрытым и использовать общедоступные методы установки / получения, но мне нравится это так:).
Редактировать: Добавлены теги кода