Java-继承和多态

目录

1.什么是继承

2.多态的概念

示例:


Java继承和多态是面向对象编程的两个核心概念。它们在Java语言中得到了很好的支持,下面分别对这两个概念进行介绍。

1.什么是继承

       Java继承是面向对象编程中的一个核心概念,它允许一个新的类(称为子类或派生类)基于一个已存在的类(称为父类或基类)进行定义,从而子类可以继承父类的属性和方法。这种机制可以避免代码重复,提高代码的可重用性,并有助于建立一个类的层次结构。
      在Java中,继承是通过`extends`关键字来实现的。当一个类继承另一个类时,它将自动获取父类中所有非私有(即public和protected)的成员变量和方法。这意味着子类可以重用和扩展父类的功能,而不需要重新编写相同的代码。
     需要注意的是,Java不支持多重类继承,即一个类不能继承多个父类。但是,Java支持多层继承,即一个类的父类可以继承另一个父类,从而形成一个类的继承层次结构。
     继承不仅可以用于重用代码,还可以用于实现多态性。多态性是指同一个行为在不同类型的对象上具有不同的表现形式。在Java中,多态性主要通过继承和接口实现来达到。子类可以重写(override)父类的方法,以实现特定的行为。

2.多态的概念

       Java多态(Polymorphism)是面向对象编程中的一个重要概念,它指的是同一个行为在不同的对象上具有多个不同的表现形式或形态。在Java中,多态可以通过继承和接口实现来达到。多态的核心思想是:一个接口可以有多个不同的实现,一个父类的引用可以指向子类的对象,从而实现对不同对象的统一操作。
多态有以下几个主要特点:
      消除类型之间的耦合关系:多态允许将不同的子类对象看作父类对象,从而降低代码间的耦合度,提高代码的通用性。
      可替换性:多态允许子类对象替换父类对象,使得程序可以在运行时动态地选择具体要执行的行为。
      可扩充性:多态允许增加新的子类而不影响已存在的类的多态性、继承性以及其他特性的运行和操作。这使得程序具有更好的可扩展性。
      接口性:多态允许实现多个接口,从而实现不同接口之间的解耦。
      灵活性:多态使得程序可以针对不同对象采用不同的策略,提高程序的灵活性。
      简化性:多态可以简化代码,减少重复代码,提高代码的简洁性。
     在Java中,多态主要通过继承和接口实现来达到。子类可以重写(override)父类的方法,以实现特定的行为。多态的实现需要满足以下三个条件:
     继承:要有继承关系的存在,即子类继承父类或实现接口。
     重写:子类重写父类的方法,使得同一个方法在不同子类中有不同的实现。
父类引用指向子类对象:父类引用变量可以指向子类对象,从而实现对不同子类对象的统一操作        Java多态是面向对象编程中的一个核心概念,它使得代码更灵活、可扩展性更强,并有助于编写更具可维护性和可扩展性的代码。理解多态对于Java开发者来说至关重要。

示例:

创建“Animal”类为基类,以及“dog”好“cat”类作为子类,展示多态和继承的基本应用

代码展示:

// 定义Animal类作为基类
class Animal {
    // 定义属性
    String name;

    // 构造方法
    public Animal(String name) {
        this.name = name;
    }

    // 定义一个方法,用于打印动物的名字和类型
    public void printType() {
        System.out.println("Animal: " + name);
    }

    // 定义一个抽象方法,用于动物的行为
    public abstract void behave();
}

// 定义Dog类作为子类
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    // 重写behave方法,实现Dog类的行为
    public void behave() {
        System.out.println(name + " is barking.");
    }
}

// 定义Cat类作为子类
class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    // 重写behave方法,实现Cat类的行为
    public void behave() {
        System.out.println(name + " is meowing.");
    }
}

// 主类
public class Main {
    public static void main(String[] args) {
        // 创建Dog对象
        Animal dog = new Dog("Dog");

        // 创建Cat对象
        Animal cat = new Cat("Cat");

        // 调用Animal类的printType方法,输出Animal类的类型
        dog.printType();

        // 调用Animal类的behave方法,输出Dog类的行为
        dog.behave();

        // 调用Animal类的printType方法,输出Animal类的类型
        cat.printType();

        // 调用Animal类的behave方法,输出Cat类的行为
        cat.behave();
    }
}

      这个示例中,我们首先定义了一个Animal类作为基类,并包含一个抽象方法behave()。然后,我们创建了两个子类,Dog和Cat,它们分别继承了Animal类,并重写了behave()方法,实现了各自的行为。
      在主类中,我们创建了Dog和Cat对象,并通过Animal类的引用变量来调用它们的printType()和behave()方法。这就是多态的体现,即通过基类的引用变量来调用子类的方法。
      这个示例展示了多态和继承的基本应用,通过继承,我们可以复用代码,通过多态,我们可以实现对不同子类的统一操作。

运行结果:

Animal: Dog
Dog is barking.
Animal: Cat
Cat is meowing.

    

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值