Java核心 - 继承第一弹 - Java 继承与多态的理解与应用

作者:逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言!

前言

在面向对象编程中,Java 的继承与多态是两个核心概念,它们提供了强大的机制来组织和扩展代码。本文将深入探讨这些概念,并解释它们的应用和区别。

1. 定义子类与超类

超类(父类)

超类是被继承的类,它包含了子类共享的属性和方法。

class Animal {
    void eat() {
        System.out.println("Animal is eating");
    }
}
子类

子类通过 extends 关键字扩展超类,并可以添加新的属性和方法。

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

2. 方法覆盖(Override)

方法覆盖允许子类重写从父类继承而来的方法,以实现特定的行为。覆盖的方法必须具有相同的方法签名(方法名、参数列表、返回类型)。

class Cat extends Animal {
    @Override
    void eat() {
        System.out.println("Cat is eating");
    }
}

3. 子类构造器

子类构造器可以调用父类的构造器来初始化从父类继承的属性。使用 super() 调用父类构造器,或者省略 super() 而系统默认调用父类的无参构造器。

class Dog extends Animal {
    Dog() {
        super(); // 调用父类的构造器
    }

    Dog(String name) {
        // 自定义子类构造器
    }
}

4. 继承层次与多态

Java 支持多层继承,即一个类可以同时是另一个类的子类和另一个类的父类。多态性允许同一个方法在不同对象上具有不同的行为。

Animal animal = new Dog(); // 向上转型
animal.eat(); // 调用的是Dog类中的eat方法

5. 阻止继承与final关键字

使用 final 关键字可以阻止类被继承或方法被重写。被 final 修饰的类不能被其他类继承,被 final 修饰的方法不能被子类覆盖。

final class FinalClass {
    // 该类不能被继承
}

class SubClass extends FinalClass {
    // 编译错误,无法继承final类
}

6. 强制类型转换

在继承关系中,可以使用强制类型转换将对象引用转换为其子类或父类的类型。需要注意的是,如果转换不正确会抛出 ClassCastException

Animal animal = new Dog();
Dog dog = (Dog) animal; // 向下转型

7. 抽象类与接口

抽象类

抽象类是不能被实例化的类,用 abstract 关键字声明。抽象类可以包含抽象方法和具体方法,子类必须实现抽象方法。

abstract class Shape {
    abstract void draw(); // 抽象方法
}
接口

接口是一组方法的规范,可以被类实现。一个类可以实现多个接口,从而具备接口定义的所有方法。

interface Drawable {
    void draw(); // 接口方法,没有方法体
}

class Circle extends Shape implements Drawable {
    @Override
    void draw() {
        System.out.println("Circle drawing");
    }
}

8. 受保护访问(Protected Access)

使用 protected 关键字修饰成员(属性和方法)允许子类访问这些成员,同时也允许同一包中的其他类访问这些成员。

class Animal {
    protected String name;

    protected void setName(String name) {
        this.name = name;
    }
}

class Dog extends Animal {
    void setNameAndPrint(String name) {
        setName(name);
        System.out.println("Dog's name: " + this.name);
    }
}

结论

继承与多态是Java面向对象编程中的重要概念,它们能够提高代码的重用性和可扩展性。通过本文的介绍,读者可以更深入地理解和应用Java中的继承与多态,同时也理解了抽象类、接口、方法覆盖、类型转换等相关概念及其在实际开发中的应用场景。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

逍遥Sean

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

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

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

打赏作者

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

抵扣说明:

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

余额充值