Возможно ли использовать родительский объект для создания экземпляра дочернего объекта? Класс Length2 расширяет Length1 с добавлением переменной экземпляра. Common Я попытался создать конструктор копирования, который принимает Length1 как параметр и устанавливает дополнительный ivar равным 0, но мне все еще говорят, что я не могу преобразовать из Legnth1 в Length2. Я полагаю, что может произойти какое-то неявное литье ... взгляните.Написание Java-конструктора для дочернего класса, который принимает родительский объект
public class Length1 extends Length implements Comparable<Length1>{
protected int miles;
protected int yards;
public Length1(){ //default constructor
miles = 0;
yards = 0;
}
public Length1(int m, int y){ //constructor
miles = m;
yards = y;
}
public void setYards(int x){
yards = x;
}
public void setMiles(int x){
miles = x;
}
public int getYards(){
return yards;
}
public int getMiles(){
return miles;
}
...
public class Length2 extends Length1 {
protected int feet;
public Length2(){ //default constructor
super(0,0);
setFeet(0);
}
public Length2(int m, int y, int f){ // constructor
super(m,y);
setFeet(f);
}
public Length2(Length1 x){
super(x.miles,x.yards);
setFeet(0);
}
public void setFeet(int x){
feet = x;
}
public int getFeet(){
return feet;
}
...
public class LengthTest{
public static void main(String[] args) {
Length1 a,b,c,d,e,f;
Length2 g,h,i,j;
a = new Length1(78,1610);
b = new Length1(77,1694);
c = new Length1();
d = new Length1();
g = new Length2(32,1022,1);
h = new Length2(31,1700,2);
i = new Length2();
j = new Length2();
j = c; //problem occurs here
}
}
ну, вот как наследование работает. если L2 более специфичен, чем L1, вы не можете сказать, что некоторые L2 = L1, потому что L2 должен знать некоторую информацию о полях, которые являются специфическими для L2, которые не присутствуют в L1. – Leo
, конечно, вы можете создать некоторый L2, а затем сказать, что это L1, а затем попытаться сказать, что это L2 снова. Для этого вам нужно пересечь пальцы и выполнить операцию литья. – Leo
. Есть ли рабочая среда, где я мог бы написать метод для создания объекта? Мне нужны только два ивара, содержащиеся в объекте L1, для копирования на объект L2. Да, я знаю, что это практически не имеет смысла:/ – Ktmock13