多态的实现和应用

目录

前言:

实现多态的方式:

多态的应用:

1.继承和多态

2. 接口和多态


前言:

多态是Java中一个非常重要的概念,它允许不同类的对象对同一个消息做出不同的响应。在Java中,多态性主要通过继承和接口实现来实现。下面我们来深入分析Java中多态的实现和应用。1. 继承和多态

实现多态的方式:

  1. 继承:子类可以重写父类的方法,实现不同的行为。
  2. 接口:不同的类可以实现相同的接口,但具体的实现可以不同。
  3. 方法重载:同一个类中可以有多个方法,它们具有相同的名称但参数列表不同,编译器根据参数列表的不同来选择调用哪个方法。

多态的应用:

  1. 简化代码:通过多态,可以使用统一的接口来处理不同类的对象,简化代码的逻辑。
  2. 扩展性:当需要增加新的类时,不需要修改现有的代码,只需要保证新的类符合现有的接口或继承关系即可。
  3. 面向接口编程:多态可以通过接口来实现,提高代码的灵活性和可维护性。
  4. 设计模式:多态是许多设计模式的基础,如工厂模式、策略模式等,它们都依赖于多态来实现不同的行为。

1.继承和多态

 在Java中,继承是实现多态的一种重要手段。当一个子类继承自父类时,它可以重写父类的方法,并且可以通过父类的引用指向子类的实例。这样就可以在运行时根据实际的对象类型来调用对应的方法,实现多态的效果。

例子:

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

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

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

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

在上面的例子中,Animal类是父类,Dog和Cat类是它的子类,它们都重写了父类的makeSound方法。在main方法中,我们通过Animal类的引用分别指向Dog和Cat的实例,然后调用makeSound方法,根据实际的对象类型来执行对应的方法。

2. 接口和多态

除了继承,Java中的接口也是实现多态的重要手段。一个类可以实现多个接口,并且可以通过接口的引用指向实现了该接口的类的实例,从而实现多态的效果。

例子:

interface Shape {
    void draw();
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Circle is drawn");
    }
}

class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Rectangle is drawn");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle();
        Shape rectangle = new Rectangle();
        
        circle.draw(); // 输出:Circle is drawn
        rectangle.draw(); // 输出:Rectangle is drawn
    }
}

在上面的例子中,Shape是一个接口,Circle和Rectangle类都实现了Shape接口。在main方法中,我们通过Shape接口的引用分别指向Circle和Rectangle的实例,然后调用draw方法,根据实际的对象类型来执行对应的方法。

总结:

多态是Java中一个非常重要的概念,它通过继承和接口实现来实现。通过多态,我们可以编写出更加灵活、可扩展的代码,提高代码的复用性和可维护性。同时,多态也是面向对象编程中的一个核心思想,对于理解和使用Java语言来说至关重要。

注意点:

多态的优点:可以使ArraryList不用加上存入数据类型,此时类型为Object(父类之父),意味着任意类型都能存入

多态的弊端:不能调用子类特有的功能

解决方案:变回子类类型就可以(数据类型可以强转的方式相同)不能瞎转,从创建对象时的类型判断

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值