Вот небольшой искусственный пример того, чего я пытаюсь достичь. У меня есть класс со многими параметрами - Dog
. У меня есть дочерний класс JumpyDog
, и я хочу узнать, как я могу «расширить» экземпляр Dog
, чтобы сделать его экземпляром JumpyDog
.Java - могу ли я расширить экземпляр класса, чтобы сделать его экземпляром родительского класса?
class Dog {
int age, numberOfTeeth, grumpiness, manyOtherParameters;
JumpyDog learnToJump(int height) {
JumpyDog jumpy = new JumpyDog(this); // I do not want to copy all parameters
jumpy.jumpHeight=height;
return jumpy;
}
}
class JumpyDog extends Dog {
int jumpHeight;
void jump(){}
}
Или я могу сказать что-то вроде этого:
Dog dog=new Dog();
dog.makeJumpy();
dog.jump()
Вы хотите, чтобы собака была экземпляром JumpyDog, в то время как JumpyDog является экземпляром Dog? – CPerkins
Вы хотите изменить тип объекта после его инициализации. Это невозможно в Java. Вам придется скопировать свойства «Собака» в новый экземпляр «JumpyDog». – dotvav
no, вы не можете магически переключить класс экземпляра после его создания. –