DAY7 继承多态

embedded/2024/10/18 3:57:35/

继承

 目的

提高代码的重用性,减少一些重复代码的书写

权限修饰符

就是是用来限制类中的成员(成员变量、成员方法、构造器)能够被访问的范围。

private 只能本类
缺省 本类、同一个包中的类
protected 本类,同一个包中的类、子孙类中
public 任意位置

特点

单继承:Java是单继承模式:一个类只能继承一个直接父类

多层继承:Java不支持多继承,但支持多层继承
祖宗类:Java中所有的类都是object类的子类

就近原则:优先访问自己类中,自己类中的没有才会访问父类,当子类要访问相同的父类的内容则需要用super关键字

方法重写

当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。

注意事项

  • @Override增加注解
  • 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限(public > protected >缺省)
  • 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小。
  • 私有方法、静态方法不能被重写,如果重写会报错的。

 常见场景

子类重写Object类的toString()方法,以便返回对象的内容。

子类构造器的特点

子类的全部构造器,都会先调用父类的构造器,再执行自己。

简单举个例子

首先创建一个People类,定义姓名,性别,还有有参,无参构造器,以及getter和setter方法

java">package com.test.exten;public class People {private  String name;private  char sex;public People(String name, char sex) {this.name = name;this.sex = sex;}public People() {}@Overridepublic String toString() {return "People{" +"name='" + name + '\'' +", sex=" + sex +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}
}

创建一个People类,定义技能,有参和无参构造器。

java">package com.test.exten;public class Teacher extends People {private String skill;//    public Teacher(String name, char sex, String skill) {
//        super(name, sex);
//        this.skill = skill;
//    }public Teacher(String skill) {this.skill = skill;}public String getSkill() {return skill;}public Teacher() {}public void setSkill(String skill) {this.skill = skill;}}

创建测试类Test

java">package com.test.exten;public class Test {public static void main(String[] args) {Teacher t = new Teacher();t.setSkill("唱歌");t.setName("bob");t.setSex('男');System.out.println(t.getSkill());System.out.println(t.getSex());System.out.println(t.getName());}
}

结果 

但是这样创建就会报错

在People中创建有参构造器如下就可以实现这个需求

java">   public Teacher(String name,String skill,char sex) {super(name, sex);this.skill = skill;}

THIS调用兄弟构造器

作用:在构造器中调用本类的其他构造器。

super(...)this(...)必须写在构造器的第一行,而且两者不能同时出现。

多态

概念

多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态。

对象多态:人这个对象可能是学生、老师等

行为多态:老师教书,歌手唱歌等

案例:动物有狼和乌龟(对象多态),但是狼跑的快、乌龟跑的慢(行为多态)

前提

有继承/实现关系;存在父类引用子类对象;存在方法重写。

作用

在多态形式下,右边对象是解耦合的,更便于扩展和维护。

定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利。
多态下不能调用子类独有功能

多态下的类型转换问题 

注意

需要idea开启注解功能


http://www.ppmy.cn/embedded/126381.html

相关文章

系统移植一

使用设备是fs4412开发板 一、系统移植 系统移植是将一个操作系统或软件从一个硬件平台或处理器架构转移到另一个平台的过程。系统移植的主要目标是使软件在新的硬件环境下能够正常运行。在系统移植过程中,主要的改动集中在硬件相关的底层部分以及操作系统的核心模…

ROS2中级面试题汇总

大家好,我是小白小帅,继更新了ros2初级面试题汇总之后,我又马不停蹄的整理了关于ros2的中级面试题(共25道),这些问题也相较于初级面试题上升了一定难度,希望小伙伴们打牢ros2基础,如…

高级java每日一道面试题-2024年10月3日-分布式篇-分布式系统中的容错策略都有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: 分布式系统中的容错策略都有哪些? 我回答: 在分布式系统中,容错策略是确保系统可靠性和高可用性的关键。这些策略旨在处理各种类型的故障,包括硬件故障、软件错误、网络问题等。以下是一些常见的…

springboot系列--web相关知识探索四

一、前言 web相关知识探索三中研究了请求中所带的参数是如何映射到接口参数中的,也即请求参数如何与接口参数绑定。主要有四种、分别是注解方式、Servlet API方式、复杂参数、以及自定义对象参数。web相关知识探索三中主要研究了注解方式以及Servlet API方式。本次…

TARA详解

汽车TARA,即汽车的威胁分析与风险评估(Threat Analysis and Risk Assessment),是汽车电子电气架构中常用的网络安全威胁分析与风险评估方法论。 定义与目的 TARA是一种用于识别、评估和应对组织信息系统(特别是汽车电…

Flutter平台嵌入器

When you build a Flutter app, it’s not just about the code you write in Dart and the Flutter framework. There’s also a crucial piece called the platform embedders that enable your Flutter app to run on different operating systems like Android, iOS, and s…

大厂面试真题-CPU飙升问题怎么定位

CPU使用率飙升是开发者和系统管理员常遇到的问题,定位CPU飙升问题通常涉及以下步骤: 一、使用系统监控工具 查看CPU使用图表:利用任务管理器(Windows系统)或top、htop(Linux系统)等工具&#…

Android App系统签名

1.在AndroidManifest中添加 android:sharedUserId"android.uid.system" 2.获取系统签名 把以下所有文件放入同一个文件夹命名为sign 在Android系统源码中的\build\target\product\security目录下找到platform.x509.pem 和 platform.pk8两个文件; 在out/…