参数多态
同一段代码处理多种数据类型
// 参数多态示例 - 泛型类
class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
// 使用
Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
Box<Integer> intBox = new Box<>();
intBox.setContent(123);
包含多态
通过继承和接口,子类对象当作父类对象使用。
// 包含多态示例
class Animal {
void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("Bark");
}
}
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("Meow");
}
}
// 使用
Animal myAnimal = new Dog(); // Dog对象被当作Animal使用
myAnimal.makeSound(); // 输出"Bark"
过载多态(重载)
// 过载多态示例 - 方法重载
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
String add(String a, String b) {
return a + b;
}
}
// 使用
Calculator calc = new Calculator();
System.out.println(calc.add(2, 3)); // 调用int版本
System.out.println(calc.add(2.5, 3.5)); // 调用double版本
System.out.println(calc.add("Hello", "World")); // 调用String版本
强制多态
// 强制多态示例 - 类型自动转换
int num = 5;
double d = num; // int自动转换为double
String str = "Number: " + 123; // int自动转换为String
// 方法调用时的自动装箱
List<Integer> list = new ArrayList<>();
list.add(1); // 基本类型int自动装箱为Integer