Java:继承与多态

文章目录

  • 一、继承
    • [1.1 什么是继承](#1.1 什么是继承)
    • [1.2 继承的语法](#1.2 继承的语法)
    • [1.3 代码演示:构建一个继承体系](#1.3 代码演示:构建一个继承体系)
  • 二、多态
    • [2.1 什么是多态](#2.1 什么是多态)
    • [2.2 多态的语法](#2.2 多态的语法)
    • [2.3 多态的代码演示](#2.3 多态的代码演示)
  • 三、总结
  • END

鸡汤:
● 当你第三次检查同一段代码,依然觉得它完美无缺时,请相信,那个BUG就站在你屏幕后面,嘲笑你的自信。它不是灵异事件,只是你的大脑开启了'选择性眼瞎'模式。去泡杯咖啡,或者给同事讲一遍你的代码,BUG会自己羞愤而死的。
● 不要瞧不起Ctrl+C/Ctrl+V。站在巨人的肩膀上,不就是复制牛顿的力学定律吗?关键是,你要知道该复制谁,以及粘贴后如何改造。无脑的粘贴是'技术债',有脑的粘贴叫'优秀开源项目复用'。

一、继承

1.1 什么是继承

如果我用两个类来描述我家的猫和狗,我发现了猫和狗都有吃和睡的行为(在类里就是两个方法)但是我们说明明是相同的行为却在两个类的两段代码,维护起来太麻烦了。

而我们想将他们所共有的行为(方法)提取出来构成一个父类,再将这个父类和它的子类创建一种关联关系,使得子类自然就拥有父类的行为(方法),这个关联关系就叫继承。而继承就是"is - a"的关系。

1.2 继承的语法

关键字 extends

语法:

java 复制代码
Class A(子类名) extends B(父类名)

使用 extends 关键字将 A 和 B 建立继承关系

猫和狗的例子
猫、狗继承自动物。动物共有的属性(名字、年龄)和行为(吃饭、睡觉)不需要在猫、狗里重复定义。

1.3 代码演示:构建一个继承体系

首先我们先定义一个猫和狗的父类,Animal(动物)类

java 复制代码
class Animal {
    public void run() {
        System.out.println("跑~~");
    }
}

Animal类 这里只有一个 run 方法

在创建一个 Cat 类和 Dog 类

java 复制代码
class Cat extends Animal {

}

class Dog extends Animal {

}

首先,我们看见 Cat类和 Dog类里没有任何的元素!

让我们运行下面的代码:

java 复制代码
public class demo extends Animal{
    public static void main(String[] args) {
        Cat cat = new Cat();
        Dog dog = new Dog();
        cat.run();
        dog.run();
    }
}

结果:

既然有结果,说明我们的 Cat 类和 Dog 类里应该是有这里的 run方法的. 这个 run方法就是继承于 Anmial类的

二、多态

2.1 什么是多态

我们还是上面的例子,猫和狗都有相同的行为,所以猫和狗可以继承Anmial类来获取来自于父类的方法,但是比如"叫"这个行为,猫和狗是一样的吗?显然是不一样的。那我们怎么解决呢,这里就要引入多态的概念了!

通俗的讲:多态就是同一种行为由不同对象去做而产生不一样的效果

2.2 多态的语法

多态的核心机制就是重载(Overload)与重写(Override),这里我们主要介绍重写(Override)

实现多态需要三个条件:
● 子类继承于父类
● 子类重写父类方法
● 父类引用指向子类对象(向上转型)

注:IDE的@Override是一个很有用的功能.

2.3 多态的代码演示

说再多也不如看一遍代码演示:
首先在 Animal 类里写一个 eat 方法

java 复制代码
class Animal {
    public void eat() {
        System.out.println("在吃饭~~");
    }
    public void run() {
        System.out.println("跑~~");
    }
}

先看一看没有重写 eat 方法的结果,运行一下

显然就是直接调用了父类的 eat 方法,那我们再修改一下 Cat 类和 Dog 类的代码

java 复制代码
class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("小猫在吃猫粮~~");
    }
}

class Dog extends Animal {
    @Override
    public void eat() {
        System.out.println("小狗在吃狗粮~~");
    }
}

让我们再看一看结果

我们可以看到这里的结果就是我们重写的 eat 方法
其实这里就是触发了"动态绑定",JVM会检查子类有没有重写调用的方法,如果没有则调用父类的方法,如果重写了方法则调用子类自己的方法.

三、总结

总而言之,掌握继承与多态,意味着你开始从"代码的搬运工"向"程序的设计者"转变。继承让我们的代码站在巨人的肩膀上,而多态则让代码拥有了面向未来的弹性。


END

最后的总结不会写😥
AI写的,我会继续进步,争取早日自己写☄️
写的第十七篇,感谢大家的观看!

相关推荐
voice6706 小时前
西电现代密码学实验一
开发语言·python·密码学
2501_916007476 小时前
从零开始学习iOS App开发:Xcode、Swift和发布到App Store完整教程
android·学习·ios·小程序·uni-app·iphone·xcode
ZhengEnCi6 小时前
J1A-Java版本选择踩坑指南-为什么99%的人选错JDK版本?大厂Java开发者的版本选择内幕大公开
java
再难也得平6 小时前
微服务拆分之SpringCloud
java·spring cloud·微服务
ypf52086 小时前
springboot DevTools热部署
java
五条凪6 小时前
Verilog-Eval-v1基准测试集搭建指南
开发语言·人工智能·算法·语言模型
初学小白...6 小时前
反射概述and获得反射对象
开发语言·python
水...琥珀7 小时前
小技巧-谷歌浏览器截长图
经验分享
后藤十八里7 小时前
2025python学习笔记Part2
开发语言·python