继承 多态 接口 抽象

继承:

继承需要我们学习的点:

  1. 什么是继承,继承的好处
  2. 继承的特点
  3. 子类到底能继承父类的那些内容?
  4. 继承中:成员变量的访问特点
  5. 继承中:成员方法的访问特点
  6. 继承中:构造方法的特点
  7. This,super使用总结

什么是继承,继承的好处:

继承是面向对象的三大特征之一,可以让类跟类之间产生子父关系,可以把多个子类重复的代码抽取到父类。

继承的格式:

Public class 子类 extends 父类{}

 

构造方法一定是不能被继承的,应为构造方法和类的名字是一样的,但是继承的子类的名字不可能和父类一致,所以构造方法是不能被继承的

和文件名一致的类才能被public修饰,其他的不写修饰词就行了。

成员变量是可以直接使用的。对于公有的变量(我们把这个变量看成一本书),子类相当于直接复制了一份,而对于私有的变量,父类里面装的还是书,而子类继承的是一个带有保险箱的书,我们需要使用get或者set来打开这个保险箱然后拿到这里面的书

对于方法只有虚方法才能被继承下来:哪些是虚方法?第一没有被static修饰的,第二没有被private修饰的,第三没有被final修饰的,这些方法才能被调用。

继承中:成员变量的访问特点:就近原则

 

在这里打印的就是ziShow,如果我们把Sring name = “ziShow”给删除那么就赋值为Zi,如果name都删掉就会报错。

如果我们使用this就会在本类里面去找name 如果是super就会在父类里面去找

 

 

在这里打印的就是ziShow,如果我们把Sring name = “ziShow”给删除那么就赋值为Zi,如果name都删掉就会报错。

如果我们使用this就会在本类里面去找name 如果是super就会在父类里面去找

 

继承中:成员方法的访问特点:

也是就近原则

也是就近原则,我觉得这个书上讲得比较好

 这个继承相当于延深,拓展的意思当this就是指定当前类,super就是指定前面一个类

 

继承中构造方法的使用特点: 

 

如果我们想要使用父类中的有参构造就可以使用super(参数1,参数2) 

 This super使用总结

 

多态 

 多态的应用场景就是注册场景,老师和学生都要进行注册,但是总不能写两个注册的方法吧,只能是使用多态将老师和学生的父类作为注册方法里面的变量

多态调用成员变量和成员方法的区别:

首先创建一个多态对象: person zi = new student();

假设里面有一个String类型的name(这个name子类里面有父类里面也有) 和 成员方法show当我们调用name的时候,这个name的值是父类里面的值,当我们调用成员方法时候调用的是子类里面的成员方法

  调用成员变量的时候:编译看左边,运行看左边

  调用成员方法的时候:编译看左边,运行看右边

多态的弊端:当子类里面含有父类里面没有的方法是,我们调用这个多态对象中的特有方法,就会报错。

解决方法:我们可以使用强制类型转化,将一个范围更大的多态类型转换为范围更小的子类对象。

我们使用强制类型转换的时候不能瞎转:

Person man = new student();

Student a = (student) man;

这样就是合法的

但是如果我们是这样的:

Person man = new student();

Cat a = (cat) man;

这样子进行转化就会报错

所以当我们在写创建注册页面的时候,我们可以先用多态的方式将各个成员先接收下来 然后使用  (对象)intanceof(类):这个对象是不是这个类,如果是就强制类型转换,然后就可以使用子类里面的特有方法。

这个强制类型转换可以些简单一点

(对象)intanceof(类) b(这个b是我们要强制类型转换的对象名)

public class map {public static void main(String[] args) {Animal a = new Dog();a.show();if(a instanceof Dog b){b.ha();}}
}
class Animal{public void show(){System.out.println("吃饭");}
}
class Dog extends Animal{public void show(){System.out.println("在吃骨头");}public void ha(){System.out.println("狗在笑");}
}
class Cat extends Animal{public void show(){System.out.println("在吃鱼");}public void sad(){System.out.println("猫在哭");}}

 包:

 

 

 

Final关键字:它能够修饰方法 类 变量

如果final修饰的是一个方法:表明这个方法是最终方法,不能被重写

如果final修饰的是一个类:表明这个类是最终类,不能被继承

如果final修饰的是一个变量:那么这个变量就不叫变量,就叫常量了,只能被赋值一次

 

值得注意的是最后一点:当我们使用final修饰一个引用数据类型的时候我们是可以改变里面的属性的,但是我们不能改变这个引用数据类型的地址值,其实就是不能使用new一个新的引用数据类型 

 

权限修饰符: 

 

代码块: 

局部代码块的功能就是节约内存:减少摸一个变量的使用寿命周期,或者一个语句的使用寿命 

 

静态代码块:

静态代码块的格式:

Static{我们想要执行的语句}

执行时机:随着类的加载而加载,并且只执行一次,这句话换个意思:只有当我们创建第一个对象的时候才会调用静态代码块里面的内容,之后我们再创建对象的时候就不会执行静态代码块里面的内容了,这就是随着类的加载而加载

 

抽象类:

就是为了让那种模棱两可的方法在继承子类的时候必须重写,为什么要这么做呢?假设我们要写一个类 名字叫人了,然后人类中都必须工作,在学生这个群体中工作是学习,而在老师这个群体中工作就是教书,那我们在写这个方法的时候我们必须要重写,为了提醒程序员要重写,所以我们呢需要写一个抽象方法,含有抽象方法的类就叫做抽象类。

 

抽象类不能创建对象 

 那种@加上什么的,这个就是在提醒你这个方法是要重写的,从父类继承的方法是一个抽象类方法

 

强制子类必须要按照程序员的思路来写 

 

接口可以理解为一种规则

这张图可以帮助我们很好的理解什么叫接口

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker Desktop 不支持 host 网络模式

先把这个结论的放在前面,直接访问链接就能看到官方文档中已经明确说了不支持。 参考链接:docker desktop for windows 不支持 host 网络模式 以前对于 docker 的网络模式,一直只是了解,没有亲自尝试过。结果今天在尝试 docker 的 …

如何同时安全高效管理多个谷歌账号?

您的业务活动需要多个 Gmail 帐户吗?出海畅游,Gmail账号是少不了的工具之一,可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台,可以说是海外网络的“万能锁”。但是大家都知道,以上这些平台注册多账号如果产生关…

蓝桥集训之垒骰子

蓝桥集训之垒骰子 核心思想&#xff1a;矩阵乘法 f[i]存顶面数值 构造a矩阵 使得*f[i] f[i-1]a 则f[i] f[1] * an 快速幂优化 #include <iostream>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const int N 6,m…

Oracle APEX 23.2版本 使用应用程序工作副本进行协作开发

现状描述&#xff1a; 当前APEX协作开发都是在同一应用程序下进行的&#xff0c;这样做有可能因同一时间对同一数据进行操作造成锁表或其他问题&#xff0c;Oracle APEX23.2版本迭代后新增了部分功能&#xff0c;可以创建应用程序的工作副本来修复错误、添加功能&#xff0c;然…

C++ setmap

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C知识分享⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言 一.树形结构的关联式容器 &#x…

移动开发技术历史演化简介h5,跨平台,原生的各种技术实现方案的简单介绍

移动端的开发技术是指针对移动设备如智能手机和平板电脑等便携终端进行应用程序和服务创建的过程。本文将主要介绍一下移动端的开发技术的历史进化历程。讲述h5&#xff0c;跨平台&#xff0c;原生的各种技术实现方案和他们各自的优势与不足。 移动开发&#xff0c;不仅是编程技…

在Ubuntu系统下连接远程Ubuntu服务器

本篇文章介绍&#xff0c;如何在Ubuntu系统下连接远程Ubuntu系统并传输文件。 一. 连接远程Ubuntu服务器。 1. 打开命令行&#xff0c;输入 : sudo apt-get update &#xff0c; 对系统进行更新。 2. 安装 OpenSSH Server&#xff0c;输入 &#xff1a; sudo apt-get insta…

聊一聊电子邮件?

电子邮件是什么&#xff1f; 电子邮件是一种基于客户/服务器架构的应用。功能是实现人与人之间的交流。直到现在&#xff0c;电子邮件依然是当前因特网 注意&#xff1a;基于客户/服务器方式和基于B/S架构不一样&#xff01;客户/服务器表示的范围更广&#xff0c;当基于客户…

Python 网络请求:深入理解Requests库

目录 引言 一、Requests库简介 二、安装与基本使用 三、requests库的特性与优势 四、requests库在实际应用中的案例 1.get请求 2.post请求 3.超时重试 4.headers设置 5.session会话 6.携带cookie​​​​​​​ 7.携带代理​​​​​​​ 8.携带身份认证​​​​​…

爬虫 新闻网站 并存储到CSV文件 以红网为例 V1.0

爬虫&#xff1a;红网网站&#xff0c; 获取当月指定关键词新闻&#xff0c;并存储到CSV文件 V1.0 目标网站&#xff1a;红网 爬取目的&#xff1a;为了获取某一地区更全面的在红网已发布的宣传新闻稿&#xff0c;同时也让自己的工作更便捷 环境&#xff1a;Pycharm2021&#…

【CSS】浮动笔记及案例

CSS浮动 1. 认识浮动 float属性可以指定一个元素沿着左侧或者是右侧放置&#xff0c;允许文本和内联元素环绕它 float属性最初只使用文字环绕图片但却是早起CSS最好用的左右布局方案 绝对定位、浮动都会让元素脱标&#xff0c;以达到灵活布局的目的可以通过float属性让元素脱…

UE4_材质节点

UE4_材质节点 2017-12-07 13:56 跑九宫格 跑UV 评论(0)

arm裸机-1、定时器pwm

时钟配置 我们使用s3c2440&#xff0c;主频12M&#xff0c;查看用户手册 通过锁相环抬升到400MHZ&#xff0c;分成三条通路&#xff0c;通过HHDIVN和PDIVN配置频率比&#xff0c;这个频率比配置手册已经给出。 配置MPLL主频400Mhz&#xff0c; 通过这个公式算出MPLL s、p、m都…

hive 慢sql 查询

hive 慢sql 查询 查找 hive 执行日志存储路径&#xff08;一般是 hive-audit.log &#xff09; 比如&#xff1a;/var/log/Bigdata/audit/hive/hiveserver/hive-audit.log 解析日志 获取 执行时间 执行 OperationId 执行人 UserNameroot 执行sql 数据分隔符为 \001 并写入 hiv…

C语言——调试技巧

1.Debug和Release的介绍 Debug 通常称为调试版本&#xff0c;它包含调试信息&#xff0c;并且不作任何优化&#xff0c;便于程序员调试程序。Release 称为发布版本&#xff0c;它往往是进行了各种优化&#xff0c;使得程序在代码大小和运行速度上都是最优 的&#xff0c;以便用…

基于单片机的全自动洗衣机系统仿真设计

**单片机设计介绍&#xff0c;基于单片机的全自动洗衣机系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的全自动洗衣机系统仿真设计概要是关于利用单片机技术实现全自动洗衣机控制功能的系统设计概述。以…

科东软件参加广州机器人产业联盟举办先进工业母机专家研讨会

工业母机是“制造机器的机器”&#xff0c;具有基础性、通用性、战略性特征&#xff0c;包括了减材切削机床、等材成形装备、增材制造装备及其控制系统等&#xff0c;是衡量国家工业水平和竞争力的重要标志。广东省作为全球知名的制造业基地&#xff0c;非常重视高端装备领域工…

有关字符串算法

例题一 解法&#xff1a; 算法思路&#xff08;两两⽐较&#xff09;&#xff1a; 我们可以先找出前两个的最⻓公共前缀&#xff0c;然后拿这个最⻓公共前缀依次与后⾯的字符串⽐较&#xff0c;这样就可以找出所有字符串的最⻓公共前缀。 例题二 解法&#xff08;中⼼扩散&am…

HuggingFace踩坑记录-连不上,根本连不上

学习 transformers 的第一步&#xff0c;往往是几句简单的代码 from transformers import pipelineclassifier pipeline("sentiment-analysis") classifier("We are very happy to show you the &#x1f917; Transformers library.") ""&quo…

Flask-RESTful 分析

Flask-RESTful 是一个 Flask 扩展&#xff0c;它为构建 RESTful API 提供了方便的工具和资源。它简化了创建 RESTful 服务的过程&#xff0c;允许开发者专注于业务逻辑而不是 HTTP 协议的细节。 资源&#xff08;Resources&#xff09;&#xff1a; Resource 类&#xff1a;是…