public class PolyMorphic {
public static void main(String[] args) {
PolyMorphic.printNumber(new IntNumber(1));
PolyMorphic.printNumber(new DoubleNumber(4.54));
}
public static void printNumber(MyNumber N) {
N.print(N);
System.out.println();
}
public abstract class MyNumber{
abstract void print(MyNumber N);
}
public class IntNumber extends MyNumber{
int x;
IntNumber(){
x = 3;
}
IntNumber(int x){
this.x = x;
}
void print(MyNumber N) {
double temp = (double)x;
System.out.printf("%.2f",temp);
}
}
public class DoubleNumber extends MyNumber{
double x;
DoubleNumber(){
x = 3.23;
}
DoubleNumber(double x){
this.x = x;
}
void print(MyNumber N) {
double temp = x;
System.out.printf("%.2f",temp);
}
}
}
Поэтому я пытаюсь создать метод в классе PolyMorphic
с именем printNumber
, который равен polymorphic
и может выводить (на консоль) либо intNumber с двумя десятичными разрядами справа, либо DoubleNumber
с три знака после запятой справа. Такие как PolyMorphic.printNumber(new IntNumber(1));
Моя проблема заключается в следующем:
На линии:
PolyMorphic.printNumber(new IntNUmber(1));
PolyMorphic.printNumber(new DoubleNumber(4.54));
Это сообщение об ошибке:
"Ни один включающий экземпляр типа PolyMorphic не доступен. Должен
квалифицировать распределение с включающим экземпляром типа PolyMorphic
(например, x.new A (), где x - это экземпляр PolyMorphic). "
Это дает мне это в обоих случаях, и я не понимаю, почему это не работает. Если бы кто-то мог просто указать мне правильное направление, я был бы очень благодарен.
Спасибо.