#java #oop
#java #ооп
Вопрос:
Я создаю новый класс (B), который расширяет другой класс (A).
В классе A существует метод получения класса X, который создает и возвращает объект класса X.
Мне НЕ разрешено изменять класс A или X.
Конструктор класса X в настоящее время принимает int и string , которые уже были введены в классе A. Мне нужно переопределить этот метод в классе B и создать объект класса X с float и string вместо int и string, и я не могу понять, как это сделать. Есть идеи?
public class X {
private int myInt;
private String myString;
public X(int myInt, String myString){
this.myInt = myInt;
this.myString = myString;
}
}
public class A {
protected X getX(){
return new X(1, "A");
}
}
public class B extends A {
@Override
protected X getX(){
return new X(1.5, "A"); //Here, I can't input a float.
}
}
Комментарии:
1. Ну, поскольку
X
вы все равно не можете обрабатывать float, вам нужно преобразовать вашfloat
вint
. ПопробуйтеMath.ceil
2. Если создание объекта класса X с плавающей точкой и строкой означает также создание объекта класса, производного от
X
, тогда вы могли бы создать классY
, который расширяетсяX
и имеет c’torс плавающей точкой и строкой. а затем вB
getX()
методе, который вы бы инициализировалиY
.
Ответ №1:
float
int
по умолчанию не может быть понижен до.
Вы можете передать floor/ceil
значение float
Или используйте (int)1.5
здесь неявное преобразование