千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > java编程中的多态

java编程中的多态

来源:千锋教育
发布人:zyh
时间: 2023-06-15 17:20:00 1686820800

  多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一个消息做出不同的响应。在Java编程中,多态性通过方法重写(Override)和方法重载(Overload)来实现。

  1. 方法重写(Override):子类可以重写(覆盖)父类的方法,以改变方法的实现细节。重写的方法具有相同的名称、参数列表和返回类型。通过重写,子类可以提供自己的实现逻辑,而不是直接继承父类的实现。当父类的引用指向子类的对象时,调用相同的方法会执行子类的重写方法。  

class Animal {
public void makeSound() {
System.out.println("Animal makes sound");
}
}

class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog barks");
}
}

public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.makeSound(); // 输出: Dog barks
}
}

  2. 方法重载(Overload):在同一个类中,可以定义多个方法具有相同的名称,但参数列表不同。这些方法可以执行相似的操作,但具有不同的输入。编译器根据传入的参数类型和数量来决定调用哪个方法。  

class Calculator {
public int add(int a, int b) {
return a + b;
}

public double add(double a, double b) {
return a + b;
}
}

public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int sum1 = calculator.add(2, 3); // 调用int版本的add方法
double sum2 = calculator.add(2.5, 3.7); // 调用double版本的add方法
}
}

  多态性在Java中有许多应用场景,其中最常见的是使用父类的引用指向子类的对象,以实现对不同子类的统一处理。这样做可以提高代码的灵活性和可扩展性,使程序更易于维护和扩展。  

class Shape {
public void draw() {
System.out.println("Drawing a shape");
}
}

class Circle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}

class Rectangle extends Shape {
@Override
public void draw() {
System.out.println("Drawing a rectangle");
}
}

public class Main {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();

shape1.draw(); // 输出: Drawing a circle
shape2.draw(); // 输出: Drawing a rectangle
}
}

  在上述示例中,Shape类是父类,Circle和Rectangle类是其子类。通过父类的引用指向不同的子类对象,可以调用它们各自的draw()方法,实现了对不同形状的统一处理。这种多态性的应用使得代码更具灵活性,当新增一种形状时,只需要扩展Shape类的子类即可,不需要修改原有的代码逻辑。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT