Java学习笔记(12)

导包

Final

不能被改变的,修饰方法 类 变量

方法不能被重写

类不能被继承

变量,赋值一次,变成常量,不能再被赋值

final修饰引用数据类型,地址值不能变,里面的内容可以变

字符串是不可变的

源码中使用了private 和 final来修饰

Final修饰value使其中所存的string的地址值不能发生改变

再用private使得外界无法访问这个地址值,也就无法修改地址值

所以string里面的内容就是不能改变的

权限修饰符

代码块

局部代码块

构造代码块

这两种代码块渐渐被淘汰,不够灵活

怎么改?

  1. 直接调用有参构造
  2. 直接把重复的代码写成一个方法,直接调用

静态代码块

数据初始化的时候用

创建第一个student类时就会执行一次

创建第二个student类时机不会执行

抽象类 abstract

注意抽象方法定义没有大括号

抽象类不能创建对象

既然不能创建对象,那写构造方法有什么用?

A:当创建子类对象时,给属性进行赋值的

统一代码格式

接口 interface

定义规则

Implement

注意接口里swim是抽象方法

一个类implement一个接口后,就成了这个接口的子类,叫做实现类

接口中成员的特点

成员变量只能是常量

没有构造方法

只有抽象方法

多个接口有同名的抽象方法,则实现类中只需重写一次抽象方法,相当于重写了所有接口里的同名抽象方法。

接口继承之后,实现类里要重写所有父接口和子接口的抽象方法

JDK8后接口新增的方法

默认方法 带方法体的

加default,如果省略了default,就会被当成一个抽象方法

出现多个相同名字的默认方法,就必须要重写

静态方法 不能被重写

通过接口名.静态方法调用

JDK9之后,接口中加入私有方法

有static,只能用在静态方法中

没有static,用在默认default默认方法中

抽象方法都没有方法体,所以这些私有方法抽象方法都用不了

接口的应用

适配器设计模式 class,也是一个类

在实现类和接口之间的中间类,让实现类继承extends中间类

里面重写所有接口的抽象方法,不过是空实现

适配器写成抽象类abstract,防止被外界创建对象

内部类

为什么外部类访问内部类成员必须要创建对象?

A:因为在测试类中调用外部类的成员方法时,成员方法的形参中会有一个隐藏的this要表示调用者,如果直接使用内部类的方法,这个this调用者就没办法调用,必须先创建一个内部类的对象,通过这个内部类对象才能调用内部类的方法。

内部类的分类

成员内部类

Private:只能在本类中使用,在外界不能用

默认:只能在本包当中用,其他包用不了

Protected:只能在本包中其他类中使用或者是其他包的子类也能用

Public:所有地方都能创建对象

Static:叫做静态内部类

Private:方式一适用,方式二不适用

其他基本都用方式二

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

Outer.this.a?

内存方面解释

外部类和内部类的字节码文件是分别独立加载在方法区内存中的

内部类对象中会有一个隐藏的this记录外部类对象的地址值

Outer.this 就是获取外部类对象的地址值

总结

静态内部类 成员内部类的特殊情况 static修饰

Show1是静态内部类的非静态方法,show2是静态内部类的静态方法

局部内部类

匿名内部类 最重要!

隐藏了名字 java会帮我们起名字 叫做  (外部类类名$序号)

其实new出来的是一个对象,真正的匿名内部类是后面大括号里面的内容。

大括号里和前面的类名或是接口名是继承或实现的关系。

然后这个匿名内部类中就要重写前面的类名或是接口的所有的抽象方法

所以,把这个匿名内部类当做是一个不用起名字的子类/实现类 去用

同时,也可以起名字,即把它赋值给一个变量

还可以直接调用自己的方法

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

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

相关文章

ThreeJs 可视化大屏地图

效果图: 今天给各位提供一个可视化地图的案例和源码,关注下吧各位!回复"大屏地图" 获取工程 1、案例分析:主要使用了UI 美工图片,然后获取地图的json 数据绘制图形,贴图使用该区域的地图纹理进行…

基于SpringBoot和Vue的宠物商城网站

目录 一、 绪论1.1 研究背景1.2 研究目的1.3 研究意义 二、相关技术2.1 Spring Boot简介2.2 Vue简介2.3 前后端分离架构概述2.4 其他技术和工具 三、需求分析3.1 功能需求3.1.1 用户模块功能需求3.1.2 商品模块功能需求3.1.3 论坛模块功能需求3.1.4 留言板模块功能需求 3.2 用户…

异常机制总结

异常的本质_调试错误 异常是什么? 软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是:Exception,意思是例外。遇到这些例外情况,或者叫异常。 伪代码说明异常机制…

会员项目定价卡css3特效

会员项目定价卡css3特效,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 下载地址 会员项目定价卡css3特效代码

谁将是RAG的头部玩家?

开篇 菩提修妙树,接引证法源,屠龙万仙阵,玉虚祭封神。 混战是国内技术圈的常态,在众仙跟风与追捧的大潮中,如何看清方向至关重要,决定谁最终将封神。 语言大模型(LLM),多模态(MM),…

代码随想录day22(1)二叉树:左叶子之和(leetcode404)

题目要求:计算二叉树所有左叶子之和 思路:本题应该满足两个条件,一是叶子节点,二是要求是左叶子。所以判断时,如果一个节点左孩子的左右孩子均为空,且其右孩子也为空,此节点的左孩子就为左叶子…

编程语言常识

看图区别编程语言 什么是强类型、弱类型语言?哪种更好? 强类型语言 强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。 在强类型语言中,变量的…

【Eviews实战】——时序的平稳性检验

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

C++ 入门篇

目录 1、了解C 2、C关键字 2、命名空间 2.1 命名空间的定义 2.2 命名空间的使用 3. C输入与输出 4.缺省参数 4.1 缺省参数的概念 4.2 缺省参数的分类 5. 函数重载 5.1 函数重载的概念 5.2 C中支持函数重载的原理--名字修饰 6. 引用 6.1 引用概念 6.2 引用…

SQLiteC/C++接口详细介绍之sqlite3类(四)

快速跳转文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(三) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(五) 编写不易,有用的朋友点个赞或加粉一下万分感…

day05-SpringBootWeb请求响应

请求响应: 请求(HttpServletRequest):获取请求数据响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器&#xf…

Python环境安装及Selenium引入

Python环境安装 环境下载 Download Python | Python.org 环境安装 需使用管理员身份运行 查看环境是否安装成功 python --version 如果未成功则检查环境变量配置 安装 Selenium 库 pip install selenium Selenium 可以模拟用户在浏览器中的操作,如点击按钮、填写…

轻松玩转消息通信:SimpleAmqpClient 和 RabbitMQ 在C++中的终极指南

Rabbmq服务端 安装 这里我使用docker安装rabbitmq服务端,没有安装的就先去看其他的博客安装rabbitmq或者docker #拉取rabbitmq docker pull rabbitmq:management #运行rabbitmq,记得打开防火墙端口 docker run -d --hostname rabbitsrv --name rabbit -p 5672:5672 -p 15672…

前端和后端权限控制【笔记】

前端权限设置【笔记】 前言版权推荐前端权限设置需求效果实现资源 后端权限控制1.给所有前端请求都携带token2.添加拦截器3.配置到WebMvcConfiguration4.更多的权限验证 最后 前言 2024-3-15 18:27:26 以下内容源自《【笔记】》 仅供学习交流使用 版权 禁止其他平台发布时删…

Seata 2.x 系列【11】多数据源分布式事务

有道无术,术尚可求,有术无道,止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 多数据…

SQLiteC/C++接口简介

快速跳转文章列表:SQLite—系列文章目录 上一篇:SQLite——世界上部署最广泛的开源数据库(简介) 下一篇:SQLiteC/C接口详细介绍(一) 引言: 作为一种轻量级、嵌入式关系型数据库…

MAC M芯片 Anaconda安装

Anaconda安装 1.M芯片下载AnaConda 1.M芯片下载AnaConda https://www.anaconda.com/download 安装完成 conda的版本是24.1.2

Go语言中的make和new:内存分配与对象创建的巧妙之道

Go语言中的make和new:内存分配与对象创建的巧妙之道 Go语言作为一门简洁而强大的编程语言,提供了多种用于动态内存分配和对象创建的关键词。其中,make和new是两个常见且常被混淆的关键词。本文将深入讲解Go语言中make和new的区别,…

python来判断密码强弱-类

设计者:ISDF 版本:v1.0 日期:2019/4/3设计者:ISDF 版本:v2.0 日期:2024/4/3 class PasswordTool:密码工具类def __init__(self,password):#类的属性self.password passwordself.stregth_level 0def check…

考研C语言复习进阶(5)

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 ​编辑 ​编辑 4.1 对比一组函数: ​编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…