下面是一个示例代码,展示了ArrayList、继承中的多态性和复制构造函数的使用方法:
import java.util.ArrayList;
// 父类
class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void makeSound() {
System.out.println("Animal makes sound");
}
}
// 子类
class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println("Cat meows");
}
}
// 子类
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
// 创建一个ArrayList,用于存储Animal对象
ArrayList animals = new ArrayList<>();
// 添加Cat和Dog对象到ArrayList中
animals.add(new Cat("Tom"));
animals.add(new Dog("Max"));
// 使用多态性,调用不同子类的makeSound方法
for (Animal animal : animals) {
animal.makeSound();
}
// 复制构造函数:创建一个新的ArrayList,将原始ArrayList中的对象复制到新的ArrayList中
ArrayList copiedAnimals = new ArrayList<>(animals);
// 修改原始ArrayList中的第一个对象的name属性
animals.get(0).name = "Jerry";
// 打印原始ArrayList和复制后的ArrayList中的对象的name属性
System.out.println("Original ArrayList:");
for (Animal animal : animals) {
System.out.println(animal.name);
}
System.out.println("Copied ArrayList:");
for (Animal animal : copiedAnimals) {
System.out.println(animal.name);
}
}
}
这段代码创建了一个Animal类作为父类,然后创建了Cat和Dog作为子类,并分别重写了父类的makeSound方法。在主函数中,创建了一个ArrayList用于存储Animal对象,并添加了Cat和Dog对象。通过使用多态性,可以调用不同子类的makeSound方法。
然后使用复制构造函数创建了一个新的ArrayList,并将原始ArrayList中的对象复制到新的ArrayList中。接着,修改了原始ArrayList中的第一个对象的name属性,并打印出原始ArrayList和复制后的ArrayList中的对象的name属性。
输出结果为:
Cat meows
Dog barks
Original ArrayList:
Jerry
Max
Copied ArrayList:
Tom
Max