【Java基础】017 -- 面向对象进阶二(包、代码块、抽象类、接口、内部类)

news2024/11/28 4:46:37

 

目录

四、包和final

1、什么是包?

2、使用其它类的规则

①、规则实现

②、小结

3、final

①、示例代码

②、常量

③、练习

④、小结

五、权限修饰符和代码块

1、权限修饰符的分类

2、权限修饰符的使用规则

3、代码块

①、局部代码块(写在方法中的{})

变量只在所属的代码块中有效,最本质的作用就是:节约内存,但是现在基本上就用不上了。

②、构造代码块(写在成员位置的代码块)

③、静态代码块(重点)

④、小结

六、抽象类和抽象方法

1、什么是抽象类?

2、抽象类和抽象方法的定义格式

①、代码演示

3、抽象类和抽象方法的注意事项

4、抽象类和抽象方法的意义

5、小结

七、接口

1、为什么有接口?

2、接口的应用

3、接口的定义和使用

4、接口中成员的特点

5、接口和类之间的关系

6、接口中新增的方法

①、为什么这么设计?

②、默认方法

③、静态方法

④、私有方法(JDK9)

7、适配器设计模式

八、内部类

1、初始内部类

①、为什么要学习内部类?

②、小结

2、成员内部类

①、获取成员内部类对象

②、成员内部类如何获取外部类的成员变量

③、小结

3、静态内部类

小结

4、局部内部类(没什么用)

5、匿名内部类

①、匿名内部类的基础语法

②、匿名内部类的使用场景

③、扩展

④、小结


四、包和final

1、什么是包?

2、使用其它类的规则

①、规则实现

②、小结

3、final

①、示例代码

②、常量

示例代码:

③、练习

导入模块时,选择导入.imi文件

由于在Switch…case中使用数字导致代码可读性较差

那么我们可以提前定义常量来使用,从而增加可读性

④、小结

五、权限修饰符和代码块

1、权限修饰符的分类

2、权限修饰符的使用规则

3、代码块

①、局部代码块(写在方法中的{})

变量只在所属的代码块中有效,最本质的作用就是:节约内存,但是现在基本上就用不上了。

②、构造代码块(写在成员位置的代码块)

优于构造方法前执行

但是这种方法不灵活,如果有重复的代码,我们会把重复的代码写在一个构造方法中,然后用this调用

③、静态代码块(重点)

④、小结

六、抽象类和抽象方法

1、什么是抽象类?

2、抽象类和抽象方法的定义格式

①、代码演示

3、抽象类和抽象方法的注意事项

练习一:编写带有抽象类的标准JavaBean类

结构图:

示例代码:(JavaBean省略)

4、抽象类和抽象方法的意义

还是代码复用的问题:

5、小结

七、接口

1、为什么有接口?

可以把接口理解成一种规则:

2、接口的应用

接口是对行为的抽象

3、接口的定义和使用

练习一:编写带有接口和抽象类的标准JavaBean类

示例代码:(省略JavaBean)

4、接口中成员的特点

示例代码:

测试类:

jps(内存分析工具):

5、接口和类之间的关系

练习一:编写带有接口和抽象类的标准JavaBean类

结构图:

第一个思路:

第二个思路:(最优)

示例代码:(省略JavaBean)

6、接口中新增的方法

①、为什么这么设计?

JDK7以前,只要接口中新增了一个方法,后续的实现类也要新增该方法的重写,很麻烦

那么新特性就是这么出现的,是在接口升级时为了兼容性而使用的

②、默认方法

默认方法不强制被重写,public可以省略

如果实现了多个接口,且接口中存在相同名字的默认方法,子类必须强制重写

③、静态方法

代码实现:

④、私有方法(JDK9)

7、适配器设计模式

示例:我只想重写接口的第五个方法

InterAdapter:对接口进行空实现

然后用实现类InterImpl重写方法5即可

小结

八、内部类

1、初始内部类

①、为什么要学习内部类?

最好的方法就是把发动机作为Car的内部类

示例代码:

②、小结

2、成员内部类

①、获取成员内部类对象

示例代码:

②、成员内部类如何获取外部类的成员变量

练习一:成员内部类 - 面试题(重名问题)

示例代码:

内部类的内存图:(内部类中有一个隐藏的this,用来记录外部类对象的地址值)

③、小结

3、静态内部类

示例代码:

静态内部类方法的调用:

小结

4、局部内部类(没什么用)

5、匿名内部类

①、匿名内部类的基础语法

接口:实现关系

抽象类:继承关系

javap反编译:

②、匿名内部类的使用场景

③、扩展

对象赋值:

调用方法:

④、小结

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

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

相关文章

对docker一部分问题的处理

对docker一部分问题的处理一、permission denied二、启动容器后又立即停止三、Error: Failed to download metadata for repo appstream: Cannot prepare internal mirrorlist: No URLs in mirrorlist一、permission denied 当要执行docker images 报错: Got permi…

iOS 变体包体构建

ipa变体安装包是指单设备架构单资源的下载包大小 变体包输出方案: 1、在xcode工程中Product->Archive 2、导出选择非Appstore方式,可选择Ad Hoc, Development, Enterprise 3、在用于设置开发分发选项的页面中,为 app 瘦身选取“All co…

第三章.神经网络的学习—梯度,手写数字识别2层神经网络的实现

第三章.神经网络的学习 3.2 梯度 梯度法使用梯度的信息决定前进的方向,在介绍梯度法之前,先介绍一下导数和偏导。 1.导数 1).公式: 2).代码实现: 注意: ①.h 1e-4不可以使用过小的值,会出现计算出错的问题…

室外定位靠卫星 室内定位又如何?

人类为了不让自己迷失在茫茫大自然中,先后发明罗盘、指南针等工具,卫星定位的问世,解决了“我在哪里”的问题。如今物联网是“信息化”时代的重要发展阶段,随着社会信息化水平的普遍提高,其社会的重要性日益显现。云计…

全国青少年编程等级考试scratch四级真题2022年9月(含题库答题软件账号)

青少年编程等级考试scratch真题答题考试系统请点击电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手1、运行下列程序,说法正确的是?( )A.列表…

Android 图形系统详解

概述 一个页面(Activity)显示到屏幕上主要经过一下几个流程: 启动 Activity → 创建 Window → WMS 注册 Window → SurfaceFlinger 创建 Surface → 合成 layer → 显示 主要涉及三个进程:App进程、System_server进程、SurfaceF…

常用的硬件端口中各个引脚代表的含义(持续更新)

常见接口 参考:https://blog.csdn.net/qlexcel/article/details/117429653 type-c 示意图 参考:https://blog.csdn.net/qlexcel/article/details/117431413,https://blog.csdn.net/HandsomeHong/article/details/119823915&#xff…

Hystrix容错组件

Hystrix简介Hystrix,英文意思是豪猪,全身是刺,看起来就不好惹,是一种保护机制。它是容错组件,Hystrix也是Netflix公司的一款组件。那么Hystix的作用是什么呢?具体要保护什么呢?Hystix是Netflix开源的一个延…

基于WebGl的智慧校园Web3D管理系统

学校是社会进步与学生成才的重要载体。随着信息化趋势的不断加强,构建"智慧型"校园,继续加强把学校作为主体的教育信息化进程,是教育信息化的主要构成部分。今天给大家分享一个基于 数维图 的 Sovit3D编辑器 构建的学校3D可视化场景…

BIM技巧 | Revit绘制围栏12步骤

首先简单介绍一下revit中的栏杆其实是有三部分的族组成,分别是:支柱,扶栏结构,栏杆。 所以要灵活的运用栏杆命令绘制需要的构造,最少要新建三个族。 第一步:绘制支柱族 用“公制栏杆-支柱”族样板绘制围墙…

【GD32F427开发板试用】二、USB库移植与双USB CDC-ACM功能开发

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:chenjie 【GD32F427开发板试用】一、环境搭建与freertos移植 【GD32F427开发板试用】二、USB库移植与双USB CDC-ACM功能开发 【GD32F427开发板…

SSM之前回顾

1、技术栈总览 学习要搞清楚你的目标;先学C/JAVA;搞程序不要太浮躁; java基础:计算机基础、写博客、java基础语法、流程控制和方法、数组、面向对象、异常、常用类、集合框架、IO、多线程、GUI、网络编程、注解与反射、JUC编程、…

操作符详解(上篇)

前言小伙伴们大家好,随着对c的不断学习今天我们将来学习操作符。在初始c语言中也介绍过操作符但也只是点到即可,今天我们将详细了解操作符。操作符分类:算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号…

不用自己排版设计的海报设计工具!在线海量模板!

人才招聘旺季,如何再众多的招聘海报中脱颖而出,招聘到心意人才呢?HR要如何排版设计招聘海报呢?只需跟着小编下面的乔拓云工具使用教程,不仅能帮你解决海报设计文案灵感和排版灵感,还不需要任何设计基础就能…

15.面向对象程序设计

文章目录面向对象程序设计15.1OOP:概述继承动态绑定15.2定义基类和派生类15.2.1定义基类成员函数与继承访问控制与继承15.2.2定义派生类派生类对象及派生类向基类的类型转换派生类构造函数派生类使用基类的成员继承与静态成员派生类的声明被用作基类的类防止继承的发…

【虹科公告】好消息!云展厅开放时间长达1年,2023年不限次云观展

云展厅开放通知 2023年,【虹科赋能汽车智能化云展厅】将持续开放,开放时间长达一年,开放期内,均可进入观展,没有次数及观看时长限制,欢迎大家随时进入云展厅观展。 虹科赋能汽车智能化云展厅 聚焦前沿技…

【手撕面试题】HTML+CSS(高频知识点五)

目录 面试官:css 如何实现左侧固定 300px,右侧自适应的布局? 面试官:flex 布局中 align-content 与 align-items 有何区别? 面试官:Grid 布局的优势在哪里? 面试官:Flex 布局中的…

【1797. 设计一个验证系统】

来源:力扣(LeetCode) 描述: 你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它…

游戏多开的分析与实现

大部分游戏为了防止工作室通过多开游戏牟利,都会采取各种手段来防止游戏被多次打开。检测窗口标题,创建互斥体,创建内存映射这些都是防止游戏多开的常用手段。 主要内容 游戏运行后,无非执行两步操作 若已经存在,退出…

【问题代码】顺序点的深入理解(汇编剖析+手画图解)

这好像是一个哲学问题。 目录 前言 一、顺序点是什么? 二、发生有关顺序点的问题代码 vs中: gcc中: 三、细读汇编 1.vs汇编如下(示例): 2.gcc汇编如下(示例): 四…