Java:继承与多态
文章目录
- 一、继承
- 1.1 什么是继承
- 1.2 继承的语法
- 1.3 代码演示:构建一个继承体系
- 二、多态
- 2.1 什么是多态
- 2.2 多态的语法
- 2.3 多态的代码演示
- 三、总结
- END
鸡汤:
● 当你第三次检查同一段代码,依然觉得它完美无缺时,请相信,那个BUG就站在你屏幕后面,嘲笑你的自信。它不是灵异事件,只是你的大脑开启了‘选择性眼瞎’模式。去泡杯咖啡,或者给同事讲一遍你的代码,BUG会自己羞愤而死的。
● 不要瞧不起Ctrl+C/Ctrl+V。站在巨人的肩膀上,不就是复制牛顿的力学定律吗?关键是,你要知道该复制谁,以及粘贴后如何改造。无脑的粘贴是‘技术债’,有脑的粘贴叫‘优秀开源项目复用’。
一、继承
1.1 什么是继承
如果我用两个类来描述我家的猫和狗,我发现了猫和狗都有吃和睡的行为(在类里就是两个方法)但是我们说明明是相同的行为却在两个类的两段代码,维护起来太麻烦了。
而我们想将他们所共有的行为(方法)提取出来构成一个父类,再将这个父类和它的子类创建一种关联关系,使得子类自然就拥有父类的行为(方法),这个关联关系就叫继承。而继承就是“is - a”的关系。
1.2 继承的语法
关键字 extends
语法:
Class A(子类名) extends B(父类名)
使用 extends 关键字将 A 和 B 建立继承关系
猫和狗的例子
猫、狗继承自动物。动物共有的属性(名字、年龄)和行为(吃饭、睡觉)不需要在猫、狗里重复定义。
1.3 代码演示:构建一个继承体系
首先我们先定义一个猫和狗的父类,Animal(动物)类
class Animal {public void run() {System.out.println("跑~~");}
}
Animal类 这里只有一个 run 方法
在创建一个 Cat 类和 Dog 类
class Cat extends Animal {}class Dog extends Animal {}
首先,我们看见 Cat类和 Dog类里没有任何的元素!
让我们运行下面的代码:
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 方法
class Animal {public void eat() {System.out.println("在吃饭~~");}public void run() {System.out.println("跑~~");}
}
先看一看没有重写 eat 方法的结果,运行一下

显然就是直接调用了父类的 eat 方法,那我们再修改一下 Cat 类和 Dog 类的代码
class Cat extends Animal {@Overridepublic void eat() {System.out.println("小猫在吃猫粮~~");}
}class Dog extends Animal {@Overridepublic void eat() {System.out.println("小狗在吃狗粮~~");}
}
让我们再看一看结果

我们可以看到这里的结果就是我们重写的 eat 方法
其实这里就是触发了“动态绑定”,JVM会检查子类有没有重写调用的方法,如果没有则调用父类的方法,如果重写了方法则调用子类自己的方法.
三、总结
总而言之,掌握继承与多态,意味着你开始从“代码的搬运工”向“程序的设计者”转变。继承让我们的代码站在巨人的肩膀上,而多态则让代码拥有了面向未来的弹性。
END
最后的总结不会写😥
AI写的,我会继续进步,争取早日自己写☄️
写的第十七篇,感谢大家的观看!
