一、 继承(Inheritance)
概念:
继承是面向对象编程的重要特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。继承的好处在于能够实现代码重用和层次化设计,子类可以扩展或修改父类的功能。
示例代码:
// 父类:动物
class Animal {
public void speak() {
System.out.println("动物在叫...");
}
}
// 子类:狗,继承自 Animal
class Dog extends Animal {
// 子类重写父类方法,实现多态(下面会详细介绍)
@Override
public void speak() {
System.out.println("汪汪汪!");
}
}
public class InheritanceExample {
public static void main(String[] args) {
Animal animal = new Animal();
animal.speak(); // 输出: 动物在叫...
Dog dog = new Dog();
dog.speak(); // 输出: 汪汪汪!
}
}
二、 多态(Polymorphism)
概念:
多态是指同一个方法调用,根据对象的不同而表现出不同的行为。多态主要依赖于继承和方法重写(Override),即通过父类引用指向子类对象时调用子类中重写的方法。
示例代码:
public class PolymorphismExample {
public static void main(String[] args) {
// 父类引用指向子类对象
Animal myAnimal = new Dog();
myAnimal.speak(); // 虽然引用类型是 Animal,但实际调用的是 Dog 中重写的 speak() 方法,输出: 汪汪汪!
// 也可以使用父类对象
Animal animal = new Animal();
animal.speak(); // 输出: 动物在叫...
}
}
说明:
这里的 myAnimal.speak()
调用体现了动态绑定(动态分派):在编译时只知道变量类型为 Animal,但在运行时调用的是实际对象 Dog 的方法。
三、 消息(Message Passing)
概念:
在面向对象编程中,对象之间的通信通常是通过发送消息来实现的。消息本质上就是对对象方法的调用。当一个对象调用另一个对象的方法时,就相当于向该对象发送了一条消息。
在 Java 中,消息传递就是通过方法调用实现的。比如调用 dog.speak()
,实际上是给 dog
对象发送了一个“speak”的消息,请它执行相应的动作。
示例说明:
在前面的示例中:
- 当执行
myAnimal.speak();
时,实际上就是向myAnimal
(实际为 Dog 对象)发送了一条“speak”消息,从而触发 Dog 类中重写的speak()
方法。
四、 重载(Overloading)
概念:
重载是指在同一个类中,可以定义多个同名的方法,但它们的参数列表(类型、个数、顺序)必须不同。编译器根据传入参数的类型和个数来选择合适的方法进行调用。
示例代码:
class Calculator {
// 加法方法重载1:两个 int 类型参数
public int add(int a, int b) {
return a + b;
}
// 加法方法重载2:两个 double 类型参数
public double add(double a, double b) {
return a + b;
}
// 加法方法重载3:三个 int 类型参数
public int add(int a, int b, int c) {
return a + b + c;
}
}
public class OverloadingExample {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println("2 + 3 = " + calc.add(2, 3)); // 输出: 5
System.out.println("2.5 + 3.5 = " + calc.add(2.5, 3.5)); // 输出: 6.0
System.out.println("1 + 2 + 3 = " + calc.add(1, 2, 3)); // 输出: 6
}
}
说明:
这里定义了三个同名的 add
方法,它们根据参数个数和数据类型的不同来实现不同的加法运算。这就是方法重载的典型应用。
总结
- 继承 允许子类重用父类的代码,并能通过扩展或修改来满足特定需求。
- 多态 则利用继承和方法重写,使得父类引用能够指向子类对象,并在运行时调用实际子类的方法,从而提高代码的灵活性。
- 消息传递 是对象之间的交互方式,在 Java 中体现在方法调用上。
- 重载 则允许同一个方法名根据参数不同来执行不同的操作,增强了代码的可读性和灵活性。
评论留言
欢迎您,!您可以在这里畅言您的的观点与见解!
0 条评论