java学习3

news2024/12/23 8:17:30

目录

面向对象——多态

什么是多态

多态的前提

多态有什么好处?

1.包的作用?

2.包名书写的规则?

3.什么时候需要导包?什么时候不需要导包?

final 修饰符

 权限修饰符

4种权限修饰符的范围

 抽象方法和抽象类

 接口

接口的定义和使用

 接口中成员的特点

 接口和类之间的关系

类和类的关系

类和接口的关系

接口和接口的关系

内部类

内部类的访问特点

 成员内部类

 静态内部类

局部内部类

匿名内部类(重点)


面向对象——多态

什么是多态

多态是面向对象三大特征之一,是对象的多种形态

多态的前提

1.有继承/实现关系

2.有父类引用指向子类对象

3.有方法的重写

多态有什么好处?

使用父类型作为参数,可以接收所有子类对象,体现多态的拓展性与遍历

多态变量编译看左边,运行也看左边,多态方法编译看左边,运行看右边

1.包的作用?

包就是文件夹,用来管理各种不同功能的Java类

2.包名书写的规则?

需要全部英文小写,见名知意

公司域名反写+包的作用,

3.什么时候需要导包?什么时候不需要导包?

使用同一个包中的类时,不需要导包
使用java.lang包中的类时,不需要导包,
其他情况都需要导包
需要用全类名
如果同时使用两个包中的同名类,要写全类名(包名+类名)

final 修饰符

final修饰方法,该方法不能被重写

final修饰类,该类不能被继承

final修饰变量,叫做常量,值不能改变

 权限修饰符

权限修饰符:是用来控制一个成员能够被访问的范围的

可以修饰成员变量,方法,构造方法,内部类

4种权限修饰符的范围

 抽象方法和抽象类

抽象方法:将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样所以,在父类中不能确定具体的方法体该方法就可以定义为抽象方法。

疑问:既然每个子类又要重新写每个方法,那何不父类不定义这个类?反正每个子类又要写

原因:写到父类可以约束子类方法的命名,方便后序的查看,也避免不同子类此方法命名不一样情况

抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

 抽象类不能实例化即不能创建对象

 

 接口

接口的定义和使用

接口用关键字interface来定义

public interface 接口名 {}

接口不能实例化(不能创建对象)

接口和类之间是实现关系,通过implements关键字表示

 接口中成员的特点

1.成员变量只能是常量

默认修饰符:public static final

2.没有构造方法

3.方法只能是抽象方法

 接口和类之间的关系

类和类的关系

继承关系,只能单继承,不能多继承,但是可以多层继承

类和接口的关系

实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

接口和接口的关系

继承关系,可以单继承,也可以多继承

 1.接口代表规则,是行为的抽象。想要让哪个类拥有~个行为,就让这个类实现对应的接口就可以了。
2.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。

 

内部类

定义:在一个类的里面,再定义一个类。举例:在A类的内部定义B类,B类就被称为内部类

类的五大成员

属性,方法、构造方法、代码块、内部类

 内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义

比如上面的发动机,独立出来没有太大的意义

内部类的访问特点

内部类可以直接访问外部类的成员,包括私有

外部类要访问内部类的成员,必须创建对象

 成员内部类

写在成员位置的,属于外部类的成员,比如:private,默认,protected,public,static等

成员内部类可以被一些修饰符所修饰在成员内部类里面,

JDK16之前不能定义静态变量,JDK16开始才可以定义静态变量。

 静态内部类

1.静态内部类也是成员内部类中的一种

2.静态内部类只能访问外部类中的静态变量和静态方法,

 如果想要访问非静态的需要创建外部类的对象。

创建静态内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
调用静态方法的格式:
外部类名.内部类名.方法名();

局部内部类

1.将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。

2.外界是无法直接使用,需要在方法内部创建对象并使用。

3.该类可以直接访问外部类的成员,也可以访问方法内的局部变量。

匿名内部类(重点)

1.什么是匿名内部类?

隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置

 3.格式的细节
包含了继承或实现,方法重写,创建对象。
整体就是一个类的子类对象或者接口的实现类对象

4.使用场景
当方法的参数是接口或者类时以接口为例,可以传递这个接口的实现类对象,如果实现类只要使用一次,就可以用匿名内部类简化代码

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

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

相关文章

JavaScript变量对象详解

正文 在JavaScript中,变量对象是执行上下文中的一个重要概念,它负责存储函数中的变量、函数声明和形参。了解变量对象对于理解JavaScript的作用域、作用域链以及变量的声明和提升至关重要。 1. 变量对象的定义 变量对象是在执行上下文创建阶段被创建的&a…

【前端面试3+1】04浏览器存储、flex布局属性和常用指令、 promise和async await区别、【验证回文串】

一、浏览器存储 1.1类型: 浏览器数据存储的方式有以下几种: Cookie:小型文本文件,存储在用户计算机上,可以通过浏览器传输到服务器。Web Storage:包括LocalStorage和SessionStorage,可以在浏览器…

【JavaEE初阶系列】——一万字带你了解 JUC常见类 以及 线程安全集合类(哈希表)

目录 🚩JUC(java.util.concurrent) 的常见类 🎈Callable 接口 🌈理解 Callable(相关面试题) 🌈理解 FutureTask 📝线程创建方式 🎈 ReentrantLock可重入锁 🌈ReentrantLock 优势&#x…

【Python BUG】ModuleNotFoundError: No module named ‘streamlit.cli‘

问题 streamlit做大模型前端demo,安装后不好使。 解决方案 参考: https://zhuanlan.zhihu.com/p/656164361 找到下面文件: 替换、修改内容: # from streamlit.cli import main from streamlit.web.cli import main原来是上边…

JavaScript_与html结合方式

JavaScript_语法 ECMAScript&#xff1a;客户端脚本语言的标准 1.基本语法 1.1 与html结合方式&#xff08;2种&#xff09; 1. 内部JS 定义<script>,标签体内容就是js代码 2. 外部JS 定义<script>,通过src属性引入外部的 js文件 注意&#xff1a; 1.<script>…

【DPU微知识】NVIDIA-BlueFiled DPU概念之:BFB是什么?

BFB是BlueField Boot Stream的缩写&#xff0c;由Bootloader、Linux OS、Romfs组成。本质&#xff1a;bootload、系统、文件系统。&#xff08;其实就是DPU的上装类比标准host的grub、linux、文件系统&#xff0c;类似做Linux移植时候构建的最小文件系统的三件套差不多&#xf…

3D模型格式转换工具HOOPS Exchange如何将3D文件加载到PRC数据结构中?

HOOPS Exchange是一款高效的数据访问工具&#xff0c;专为开发人员设计&#xff0c;用于在不同的CAD&#xff08;计算机辅助设计&#xff09;系统之间进行高保真的数据转换和交换。由Tech Soft 3D公司开发&#xff0c;它支持广泛的CAD文件格式&#xff0c;包括但不限于AutoCAD的…

uniapp项目-懂你找图

文章目录 项目介绍项目搭建1.项目创建 2.新增tabbar3引入字体图标 uni-ui介绍使用 uni-api介绍 首页模块功能分析搭建子页面分段器介绍 封装自己的异步请求为什么要封装封装的思路 编写首页-推荐页面分页功能 专辑列表获取专辑详情数据 项目介绍 微信小程序&#xff0c;提供图…

苹果开发者账号注册后生成开发证书和发布证书的流程解析

转载&#xff1a;注册苹果开发者账号的方法 在2020年以前&#xff0c;注册苹果开发者账号后&#xff0c;就可以生成证书。 但2020年后&#xff0c;因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号&#xff0c;所以需要缴费才能创建ios证书了。 所以新政策出…

【机器学习】机器学习创建算法第3篇:K-近邻算法,学习目标【附代码文档】

机器学习&#xff08;算法篇&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习算法课程定位、目标&#xff0c;K-近邻算法定位,目标,学习目标,1 什么是K-近邻算法,1 Scikit-learn工具介绍,2 K-近邻算法API。K-近邻算法&#xff0c;1.4 …

EfficientVMamba实战:使用 EfficientVMamba实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

搜索二维矩阵 II - LeetCode 热题 21

大家好&#xff01;我是曾续缘&#x1f497; 今天是《LeetCode 热题 100》系列 发车第 21 天 矩阵第 4 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&…

PHP在线加密系统网站源码

源码介绍 PHP在线加密系统网站源码&#xff0c;这个是sg的加密,免费可用(目前)并不会收费 源码说明&#xff1a;下载直接上传即可 下载地址 蓝奏云下载&#xff1a;https://wfr.lanzout.com/i6c331togiji

关于磁盘算法

性能瓶颈&#xff1a;IO–>IO调度–>IO调度算法–>1楼到顶楼&#xff0c;再从零楼下来&#xff0c;效率高–>IO调度目标–>IO算法–>电梯算法–linux6和Linux7算法不一样–>linux6 单队列 Linux7 多队列 inux6: 试用于不同的环境和介质。 noop 适合闪存&…

jmeter性能压测

jvm指令 jstat -gcutil -h5 -t 1 3s 发压端的tcp这么达到1000TPS jmeter的jvm的设置

PW1503限流芯片:可达3A限流,保障USB电源管理安全高效

在电源管理领域&#xff0c;开关的性能直接关系到设备的稳定性和安全性。今天&#xff0c;我们将详细解析一款备受关注的超低RDS&#xff08;ON&#xff09;开关——PW1503。它不仅具有可编程的电流限制功能&#xff0c;还集成了多项保护机制&#xff0c;为各类电子设备提供了高…

springboot之MybatisPlus

文章目录 一、ORM二、mybatis实际操作三、mybatis-plus 一、ORM 简单来说ORM就是一个能够帮我们把java中Bean类映射到数据库中。 使用mybatis-plus。 配置架包 <!-- MyBatisPlus依赖 --><dependency><groupId>com.baomidou</groupId><art…

谷粒商城实战(008 缓存)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第151p-第p157的内容 简介 数据库承担落盘&#xff08;持久化&#xff09;工作 拿map做缓存 这种是本地缓存&#xff0c;会有一些问题 分布…

注解——自定义注解、元注解、开发Junite框架

官方注解 自定义的注解 元注解 指的是&#xff1a;修饰注解的注解 常用的两个元注解——Target\ Retention 注解的解析 应用场景&#xff1a;开发Junit框架

KH-IPEX-K501-29

KH-IPEX-K501-29品牌: kinghelm(金航标)封装: SMD 描述: 1代