Java 中子类对象放到父类集合中
在面向对象编程中,子类和父类是重要的概念。Java 语言通过继承机制允许子类继承父类的属性和方法,这为代码的复用和扩展提供了便利。在实际开发中,一个常见的需求是将子类对象存储到父类集合中。本篇文章将介绍这一概念,并给出相应的代码示例。
理论基础
在 Java 中,可以通过继承创建一个类的子类。子类继承了父类的所有属性和方法,并可以根据需要进行扩展或重写。利用多态性,我们可以将子类对象赋值给父类类型的引用,从而实现将子类对象放到父类集合的需求。
以下是一个简单的类图,展示了Animal
类及其子类Dog
和Cat
的关系:
classDiagram
class Animal {
+String name
+void sound()
}
class Dog {
+void sound()
}
class Cat {
+void sound()
}
Animal <|-- Dog
Animal <|-- Cat
代码示例
接下来,我们将通过代码示例来演示如何将子类对象放入父类集合中。代码示例如下:
import java.util.ArrayList;
import java.util.List;
// 父类
class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public void sound() {
System.out.println("Animal sound");
}
}
// 子类 Dog
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void sound() {
System.out.println(name + " says: Woof!");
}
}
// 子类 Cat
class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void sound() {
System.out.println(name + " says: Meow!");
}
}
public class Main {
public static void main(String[] args) {
// 创建一个父类集合
List<Animal> animals = new ArrayList<>();
// 添加子类对象
animals.add(new Dog("Rex"));
animals.add(new Cat("Whiskers"));
// 遍历集合并调用方法
for (Animal animal : animals) {
animal.sound();
}
}
}
在上述代码中,我们创建了一个父类Animal
和两个子类Dog
和Cat
。然后我们在Main
类中创建了一个List<Animal>
集合,并将两个子类对象添加到这个集合中。最后,我们遍历集合并调用每个对象的sound
方法,演示了多态的特性。
关系图
为了更好地理解这种关系,我们可以用 ER 图展示它们之间的关系:
erDiagram
ANIMAL {
string name
}
DOG {
string name
}
CAT {
string name
}
ANIMAL ||--o| DOG : "is a"
ANIMAL ||--o| CAT : "is a"
在这里,ANIMAL
是父类,DOG
和CAT
是两个子类。每个子类对象都可以被视为一个ANIMAL
类型的对象。
结尾
通过本篇文章,我们介绍了 Java 中子类对象如何放在父类集合中的基本原理及代码实现。利用继承和多态,我们能够更灵活地处理对象,提高代码的可读性和扩展性。理解这一概念对 Java 编程的学习非常重要,希望本文对你有所帮助。