🚀 第12天 我的自动化之旅 – 理解 Java 中的多态

发布: (2026年3月7日 GMT+8 22:31)
5 分钟阅读
原文: Dev.to

Source: Dev.to

📌 什么是多态?

多态意为“多种形态”。在 Java 中,它使相同的方法名根据传入的参数表现出不同的行为。

Java 中的两种多态

1️⃣ 编译时多态(方法重载)
2️⃣ 运行时多态(方法重写)

今天我们重点介绍 方法重载

📌 什么是方法重载?

方法重载意味着:

  • 相同的方法名
  • 参数数量不同
  • 参数类型不同
  • 参数顺序不同

示例签名

debitamount(int amount, int pin)

debitamount(long amount, int pin, String name, double balance)

即使方法名相同,只要参数列表不同,Java 也会把它们视为不同的方法。

💻 示例程序 – ATM 交易

package polymorphism;

public class ATM {

    public static void main(String[] args) {

        ATM sbi = new ATM();
        sbi.debitamount(1000, 123);

        ATM icici = new ATM();
        icici.debitamount(3000, 6364, "Rajiv", 10.23);
    }

    void debitamount(int amount, int pin) {
        System.out.println("SBI Bank successfully debited " + amount);
    }

    void debitamount(long amount, int pin, String name, double balance) {
        System.out.println("ICICI Bank successfully debited " + amount + " for " + name);
    }
}

🔎 代码说明

Step 1 – 程序执行开始

Java 从 main() 方法开始执行:

public static void main(String[] args)

Step 2 – 对象创建

ATM sbi = new ATM();
  • ATM → 类名
  • sbi → 引用变量
  • new ATM() → 在堆内存中创建对象

Step 3 – 调用第一个方法

sbi.debitamount(1000, 123);

Java 查找签名为 (int, int) 的方法并执行:

void debitamount(int amount, int pin)

输出

SBI Bank successfully debited 1000

Step 4 – 创建第二个对象

ATM icici = new ATM();

创建了第二个对象。

Step 5 – 调用重载方法

icici.debitamount(3000, 6364, "Rajiv", 10.23);

Java 现在搜索签名为 (long, int, String, double) 的方法并执行:

void debitamount(long amount, int pin, String name, double balance)

输出

ICICI Bank successfully debited 3000 for Rajiv

🧠 Java 如何决定调用哪个方法

编译器检查:

1️⃣ 方法名
2️⃣ 参数数量
3️⃣ 参数的数据类型

这个过程称为 编译时方法绑定,因为决定发生在编译期间。

🔍 实践中的重要发现

1️⃣ 整数默认类型

字面量如 100 默认被视为 int

2️⃣ Byte / Short 不会自动接受

byte balance = 100;   // error: possible lossy conversion from int to byte

可能需要显式强制转换:

byte balance = (byte) 100;

3️⃣ Long 值

对于 long 字面量我们通常在后面加 L

long amount = 3000L;

Java 也可以在需要时自动将 int 提升为 long

4️⃣ 小数

字面量如 10.23 默认是 double。若要存入 float,在后面加 f

float balance = 10.23f;

double 不需要后缀,因为它是默认类型。

📊 Java 数值默认类型概览

ValueDefault Type
100int
100Llong
10.5double
10.5ffloat

在 Java 中,整数字面量默认是 int 类型。将它们赋给更小的类型(如 byteshort)可能需要强制类型转换。允许自动的宽化转换(例如 intlong),但不允许窄化转换(例如 intbyte)。十进制字面量默认是 double,除非使用 f 后缀将其指定为 float

📚 第12天要点

  • ✅ 什么是 Polymorphism
  • method overloadingmethod overriding 的区别
  • method overloading 在实践中的工作方式
  • ✅ Java 在编译时如何选择重载方法
  • ✅ Java 中数值字面量的默认行为

Meric 数据类型

Understanding polymorphism is important because it helps us write flexible and reusable code.

👨‍🏫 Trainer: Nantha from Payilagam

🤖 小提示
I used ChatGPT to help structure and refine this blog while ensuring the concepts remain aligned with my trainer’s explanations.

0 浏览
Back to Blog

相关文章

阅读更多 »