Java 核心与应用:Java 继承与多态

Java 核心与应用:Java 继承与多态

引言

“继承是代码复用的利器,多态是面向对象编程的灵魂。”

Java 作为一门面向对象的编程语言,继承与多态是其核心特性之一。理解这两者不仅能帮助你写出更优雅的代码,还能让你在面试中脱颖而出。本文将带你深入探索 Java 继承与多态的世界,从基础概念到高级应用,逐步揭开它们的神秘面纱。

🚀 学习目标

  1. 掌握继承关系的建立与使用场景
  2. 理解方法重写的限制条件与实现技巧
  3. 解析构造方法在继承链中的调用顺序
  4. 通过虚方法表理解动态绑定原理
  5. 学会在项目中应用组合优于继承原则

1. Java 继承基础

1.1 什么是继承?

继承是面向对象编程中的一个重要概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类可以复用父类的代码,并在此基础上进行扩展或修改。

1.1.1 继承的语法
class Animal {
   
    void eat() {
   
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
   
    void bark() {
   
        System.out.println("Dog is barking");
    }
}

在上面的代码中,Dog 类继承了 Animal 类,因此 Dog 类可以使用 Animal 类中的 eat() 方法。

1.1.2 继承的类型

Java 支持单继承,即一个类只能有一个直接父类。但可以通过多层继承实现类似多继承的效果。

继承类型 描述
单继承 一个类只能有一个直接父类
多层继承 子类可以继承父类,父类又可以继承另一个类

1.2 方法重写(Override)

方法重写是子类对父类方法的重新实现。重写的方法必须与父类方法具有相同的方法签名(方法名、参数列表)和返回类型。

1.2.1 方法重写的规则
  1. 方法签名必须一致:方法名、参数列表必须与父类方法相同。
  2. 返回类型协变:子类方法的返回类型可以是父类方法返回类型的子类。
  3. 访问权限不能更严格:子类方法的访问权限不能比父类方法更严格。
  4. 异常限制:子类方法抛出的异常不能比父类方法抛出的异常更广泛。
// Animal.java
public class Animal {
   
    protected String name;
    
    public Animal(String name) {
   
        this.name = name;
        System.out.println("Animal构造器执行");
    }
    
    public void eat() {
   
        System.out.println(name + "正在进食");
    }
}

// Dog.java
public class Dog extends Animal {
     // 继承语法
    private String breed;
    
    public Dog(String name, String breed) {
   
        super(name);  // 必须首先调用父类构造器
        this.breed = breed;
        System.out.println("Dog构造器执行");
    }
    
    @Override
    public void eat() {
     // 方法重写
        super.eat();     // 调用父类实现
        System.out.println(name + "正在啃骨头");
    }
    
    public void bark() {
   
        System.out.println("汪汪!我是" + breed);
    }
}

在上面的代码中,Dog 类重写了 Animal 类的 eat() 方法,因此 Dog 类调用 eat() 方法时,执行结果为:Dog .eat() 的结果。

重写规则对比表

特性 父类方法 子类重写方法
访问修饰符 protected public/protected
返回类型 Animal Dog(协变类型)
异常声明 IOException 不声明或子异常
方法签名 eat(String food) eat(String food)
static修饰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零壹工坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值