java,多态vector数组,如何当索引用变量表示时,仍能更改对应索引元素的信息!不改变属于的子类,只改变子类字段的信息
时间: 2023-09-24 18:05:39 浏览: 35
可以通过定义一个父类,其中包含子类的共同特征和方法,然后定义一个装载该父类对象的Vector数组。当需要更改某个子类对象的信息时,可以通过索引获取该对象,然后进行强制类型转换,即将父类对象转换为子类对象,然后再对子类对象进行操作,这样就可以更改对应索引元素的信息,同时不影响子类和其字段的信息。具体实现代码如下:
```java
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
class Dog extends Animal {
public Dog(String name) {
super(name);
}
public void bark() {
System.out.println(name + " is barking.");
}
}
class Cat extends Animal {
public Cat(String name) {
super(name);
}
public void meow() {
System.out.println(name + " is meowing.");
}
}
public class Test {
public static void main(String[] args) {
Vector<Animal> animals = new Vector<Animal>();
animals.add(new Dog("Tommy"));
animals.add(new Cat("Kitty"));
Animal animal1 = animals.get(0);
if (animal1 instanceof Dog) {
((Dog)animal1).bark();
}
Animal animal2 = animals.get(1);
if (animal2 instanceof Cat) {
((Cat)animal2).meow();
}
}
}
```
在上面的代码中,我们定义了Animal类作为父类,Dog类和Cat类作为子类,并且定义了一个装载Animal对象的Vector数组。在main函数中,我们获取了索引为0和1的两个Animal对象,并进行了强制类型转换,然后调用了Dog类和Cat类的方法,实现了更改对应索引元素的信息的目的。