当前位置: 首页 > news >正文

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写的,我会继续进步,争取早日自己写☄️
写的第十七篇,感谢大家的观看!

http://www.dtcms.com/a/560805.html

相关文章:

  • 10. 从0到上线:.NET 8 + ML.NET LTR 智能类目匹配实战--Web API 接口与前端集成:部署与生产运维:稳定性、可观测与成本
  • 网站开发招标网网站免费注册会员怎么做
  • linux系统中网络编程的实现
  • Vue-github 用户搜索案例
  • GD32F407VE天空星开发板的电压电流检测
  • 网站优化文章怎么做蔡甸城乡建设局网站
  • 中小企业网站开发韵茵全屋定制家具品牌排行榜前十名
  • 分库分表MyCat 架构迁移 OceanBase | 百丽核心财务系统迁移经验总结与问题汇总
  • joomla 企业网站模板沈阳网站优化 唐朝网络
  • Flink 优化-反压处理
  • AI代码开发宝库系列:LangChain 工具链:从LCEL到实际应用
  • 泉州网站排名优化十大免费论文网站
  • 高校招生网站建设做网站一定要效果图吗
  • 学习笔记四:性能度量
  • 使用JavaScript和Node.js构建简单的RESTful API
  • 【生活】做蛋糕
  • (论文速读)EgoLife:走向自我中心的生活助手
  • 大模型时代,我们该如何学习?从“知识存储器”到“思维策展人”的蜕变
  • vc_redist.x64.exe安装方法,解决软件游戏缺少运行库问题
  • 【C++】继承(1):深入理解和使用
  • C语言内功强化之修饰关键字
  • 未来已来:AI 如何在 3 年内重塑工作、教育与生活
  • 追波设计网站wordpress如何去除页眉部分
  • 12. 深入Spring AI:多模态
  • 网站开发技术发展史网站建设要哪些人?
  • Argo CD vs Tekton vs Arbess,CI/CD工具一文纵评
  • 简单创建一个flask项目
  • 小迪安全v2023学习笔记(一百四十二讲)—— Linux系统权限提升篇VulnhubRbash绕过DockerLXD镜像History泄露
  • 驻马店市做网站asp.net网站本机访问慢
  • 河南网站备案所需资料厦门互联网公司排名