前言 在 Java 中,作为三大特性之一的多态特性是十分重要,特别是其表现形式:方法重载(Overload)、方法重写(Override) 1. 方法重载(Overload) 具体使用 public class Test { // 类定义 st
前言
在 Java 中,作为三大特性之一的多态特性是十分重要,特别是其表现形式:方法重载(Overload)、方法重写(Override)
1. 方法重载(Overload)
- 具体使用
// 类定义
static abstract class Human {
}
// 继承自抽象类Human
static class Man extends Human {
}
static class Woman extends Human {
}
// 定义的重载方法(方法名相同,但参数列表不同(此处是类型不同))
public void sayHello(Human guy) {
System.out.println("hello,guy!");
}
public void sayHello(Man guy) {
System.out.println("hello gentleman!");
}
public void sayHello(Woman guy) {
System.out.println("hello lady!");
}
// 测试代码
public static void main(String[] args) {
Human man = new Man();
Man woman = new Woman();
Test test = new Test();
test.sayHello(man);
test.sayHello(woman);
}
}
// 运行结果
hello,guy!
hello gentleman!
2. 方法重写(Override)
- 具体使用
class Human {
public void sayHello(){
System.out.println("Human say hello");
}
}
// 继承类Human 并 重写sayHello()
class Man extends Human {
protected void sayHello() {
System.out.println("man say hello");
}
}
class Woman extends Human {
protected void sayHello() {
System.out.println("woman say hello");
}
}
// 测试代码
public static void main(String[] args) {
// 情况1
Human man = new man();
man.sayHello();
// 情况2
man = new Woman();
man.sayHello();
}
}
// 运行结果
man say hello
woman say hello
// 原因解析
// 通过多态,调用了子类中复写的sayHello()
3. 二者对比 & 区别