12.面向对象(4)

news/2024/9/18 13:16:14/文章来源:https://www.cnblogs.com/swh666/p/18397222

MODULE 12 面向对象

  1. 知道final修饰成员之后特点
  2. 会使用静态代码块以及知道静态代码块的使用场景
  3. 会使用匿名内部类

一.权限修饰符

(一)概述

在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容 会有不同的访问权限

(1)public:公共的,最高权限,被public修饰的成员,在哪里都能访问

(2)protect:受保护的

(3)default:默认的,不可以将default写出来

(4)private:私有的,只能在自己的类中直接访问

(二)不同权限的访问能力

Public具有最大权限,private有最小权限

编写代码时,如果没有特殊考虑,建议这样使用权限:

(1)属性:用private -> 封装思想

(2)成员方法:public -> 便于调用

(3)构造public -> 便于new对象

二.final关键字

1.概述:最终的

2.使用:

(1)修饰一个类

(2)修饰一个方法

(3)修饰一个局部变量

(4)修饰一个成员变量

(5)修饰一个对象

3.怎么学final:只需要知道被final修饰之后特点是啥即可

(一)final修饰类

1.格式:

public final class 类名{}

2.特点:

被final修饰的类不能被继承

(二)final修饰方法

1.格式:

修饰符 final 返回值类型 方法名(形参){

方法体

return 结果

}

2.特点:

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

3.注意

final 和abstract不能同时修饰一个方法

(三)final修饰局部变量

1.格式:

final 数据类型 变量名 = 值

2.特点:

被final 修饰的变量不能二次赋值

(四)final修饰对象

1.格式:

final 数据类型 对象名 = new 对象();

2.特点:

被final修饰的对象,地址值不能改,但是对象中的属性值可以改变

(五)final修饰成员变量

1.格式

final 数据类型 变量名 = 值

2.特点:

(1)需要手动赋值

(2)不能二次赋值

三.代码块

(一)构造代码块

1.格式
{

代码

}

2.执行特点:优先于构造方法执行,每new一次,就会执行一次

(二)静态代码块

1.格式:

static{

代码

}

2.执行特点:

静态代码块优先于构造代码块和构造方法执行的,而且只执行一次

(三)静态代码块使用场景

如果想让一些数据,而且只需要初始化一次,就可以将这些数据放到静态代码块中

四.内部类

1.什么时候使用内部类:

当一个事物的内部,还有一个部分需要完整的结构去描述,而这个内部的完整 结构又只为外部事物提供服务,那么整个内部的完成结构最好使用内部类

2.在java中允许一个类的定义位于另外一个类的内部,前者称为内部类,后者称为 外部类

class A{

class B{

}

}

3.分类

成员内部类(静态,非静态)

局部内部类

匿名内部类(重点)

(一)静态成员内部类

1.格式:直接在定义内部类的时候加上static关键字

public class A{

static class B{

}

}

2.注意:

(1)内部类可以定义属性,方法,构造等

(2)静态内部类可以被final或者abstract修饰

被final修饰之后,不能被继承

被abstract修饰后,不能new

(3)静态内部类不能调用外部的非静态成员

(4)内部类可以被四种权限修饰符修饰

3.调用静态内部类成员:

外部类.内部类 对象名 = new 外部类.内部类()

(二)非静态成员内部类

1.格式:直接在定义内部类的时候加上static关键字

public class A{

class B{

}

}

2.注意:

(1)内部类可以定义属性,方法,构造等

(2)静态内部类可以被final或者abstract修饰

被final修饰之后,不能被继承

被abstract修饰后,不能new

(3)静态内部类不能调用外部的非静态成员

(4)内部类可以被四种权限修饰符修饰

3.调用非静态内部类成员:

外部类.内部类 对象名 = new 外部类().new 内部类()

外部类的成员变量和内部类的成员变量以及内部类的局部变量重名时,怎么区分?

(三)局部内部类

1.局部内部类基本操作

(1)可以定义在方法中,代码块中,构造中

2.局部内部类实际操作

(1)接口类型作为方法参数传递和返回

A.接口作为方法参数,传递实参时,传递的是实现类对象

B.接口作为返回值返回,实际返回的是实现类对象

(2)抽象类作为方法参数和返回值

A.抽象类作为方法参数,传递实参时,传递的是其子类对象

B.抽象类作为返回值返回,实际返回的是其子类对象

(3)普通类做方法参数和返回值

A.普通类作为方法参数传递,传递的是对象

B.普通类作为方法返回值返回,返回的是对象

(4)局部内部类实际操作

(四)匿名内部类(重点)

所谓的匿名内部类,可以理解为没有显示声明出来的内部类

1.问题描述:我们如果想实现接口吗,简单使用一次抽象方法,我们就需要创建一个 实现类,实现这个接口,重写抽象方法,还要new实现类对象,所以我们在想如果就 单纯的想使用一次接口中的方法,我们能不能不这么麻烦?

(1)创建实现类,实现接口

(2)重写方法

(3)创建实现类对象

(4)调用方法

2.如果就想单纯的使用一下接口中的方法,我们没必要经过以上四步,可以四合一

3.匿名内部类怎么学:就按照一种格式,这一种格式就代表了实现类对象或者子类 对象

4.格式:

new 接口/抽象类(){

重写方法

}.重写的方法();

========================================

类名 对象名 = new 接口/抽象类(){

重写方法

}

对象名.重写的方法();

(1)匿名内部类复杂用法_当参数传递

(2)匿名内部类的复杂用法_当返回值返回

5.什么时候使用匿名内部类:

当简单调用一次接口中的方法,我们就可以使用匿名内部类

6.将一种格式化代表实现类对象或者子类对象来看待学习

7.匿名内部类会编译生成的不用管,我们只需要利用咱们讲的格式去new对象,调 用重写的方法即可

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

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

相关文章

css常见布局

两列布局 1、flex 2、float 3、position: absolute 三列布局 1、flex 2、float(圣杯布局,双飞翼布局) 3、position: absolute 圣杯布局 1、注意html结构是 main-> left -> right 把重要的内容放在前面,有利于seo 2、父级padding 3、三个元素都是float <div class=&q…

Hadoop 任务提交 class not fond exception

异常描述 在使用Java client 对yarn进行任务提交的时候有时候会出现 class not fond exception, 这个原因是因为某些类并没有被正确的打包.上述问题可以通过手动设置Jar包的方式来解决从而替换原本的setJarByClass上述的Jar 包为当前程序打包后的Jar, 可以使用Idea快速构建

DP优化——斜率优化

引言 在学数据结构优化dp,单调队列优化dp时都很快就懂了,四边形不等式优化dp看一看也懂了,只有斜率优化理解了一个月还不懂,最后在其他大佬和资料的帮助下成功学懂了,于是争取这篇题解在以后又不会的时候一遍就懂。前置数学知识 1.一次函数 初中数学知识,见八年级数学课本…

shotcut安装使用

Download双击安装下一步指定路径勾选所需要的安装完成选择素材先复制粘贴到时间线如果底部没有这几个工具,点击顶部[查看]->[布局]->[恢复默认布局]点击中间的位置操作切割后选择删除文件,输出,视频

记录 macos 链接 win10 wsl2 ubuntu clickhouse 记录

遇到了许多问题 顺序应该不同 首先就是 链接的客户端是 DBeaver 链接的时候要 选择版本 低版本的 用legacy, 驱动也很重要, 下不到驱动的可以用网上找的驱动来安装有的时候 会有类名的问题 但是报错很离谱 会报 dbeaver clickhouse 链接错误 code:46 Unknown function current…

Ubuntu Nvidia driver驱动安装(新)

前言 英伟达更新了安装驱动的方式,更新一下文档 旧文:Ubuntu Nvidia driver驱动安装及卸载 下载官方驱动安装 1.安装驱动前一定要更新软件列表和安装必要软件、依赖(必须) sudo apt-get update #更新软件列表sudo apt-get install -y g++ gcc make2.查看GPU型号(你自己知…

每个端侧产品都需要的用户体验监控

ARMS RUM 是阿里云应用实时监控服务(ARMS)下的用户体验监控(RUM)产品,覆盖 Web/H5、各类平台小程序、Android、iOS、Flutter、ReactNative、Windows、macOS 等平台框架。接入 SDK 后会主动采集端侧页面性能、资源加载、API 调用、异常崩溃、卡顿、用户操作、系统信息等数据…

【YashanDB知识库】主备延迟故障分析方法

【标题】主备延迟故障分析方法 【问题分类】故障分析 【关键字】Yashandb、主备延迟 【问题描述】当数据库备机出现回放延迟时,需要通过一些手段分析延迟的原因。通过数据库的系统视图或操作系统监控数据可以辅助分析回放延迟的瓶颈。 【问题原因分析】 备延迟手段 当前备库的…

主备延迟故障分析方法

【标题】主备延迟故障分析方法 【问题分类】故障分析 【关键字】Yashandb、主备延迟 【问题描述】当数据库备机出现回放延迟时,需要通过一些手段分析延迟的原因。通过数据库的系统视图或操作系统监控数据可以辅助分析回放延迟的瓶颈。 【问题原因分析】 备延迟手段 当前备库的…

【稀疏矩阵】使用torch.sparse模块

@目录稀疏矩阵的格式coocsrcscConstruction of Sparse COO tensorsConstruction of CSR tensorsLinear Algebra operations(稀疏与稠密之间混合运算)Tensor methods and sparse(与稀疏有关的tensor成员函数)coo张量可用的tensor成员函数(经实测,csr也有一些可以用,比如d…

Serverless 应用引擎 SAE 助力袋拉拉研发提效 70%

“我们调研和准备了半年,一次性迁移到了新版 SAE 上,主要看中了 SAE 的弹性能力和运维简单的特点,而且现在新版的使用体验越来越好了,控制台界面的操作比原来都要流畅很多。但我们还在持续摸索中,看如何能更好地应用 SAE。”作者:百潼 医院环保 IOT 设备的引领者:机汽猫…