Java(内部类)

news/2024/5/28 4:06:33/

1.内部类

内的五大成员:属性、方法、构造方法、代码块、内部类

  • 解释:在一个类的里面,再定义一个类。
  • 举例:在A类的内部定义B类,B类就被称为内部类
  • 注意:内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义

内部类的访问特点

  • 内部类可以直接访问外部类的成员,包括私有
  • 外部类要访问内部类的成员,必须创建对象
public class Car(){ //外部类String carName;int carAge;int carColor;class Engine{  //内部类String engineName;int engineAge;}
}

内部类的分类

  • 成员内部类 

  1. 写在成员位置,属于外部类的成员
  2. 成员内部类可被一些修饰词修饰
public class Car(){ //外部类String carName;int carAge;int carColor;class Engine{  //成员内部类String engineName;int engineAge;}
}

   3. 获取成员内部类对象

一:在外部类编写方法,对外提供内部类的对象

public class Outer {String name;class Inner{}public Inner getInstans(){return new Inner();}
}
Outer o = new Outer();
o.getInstans();

二:直接创建  格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象 

OUter.Inner oi = new Outer().new Inner();

public class Outer {private int a = 10;class Inner{private int a = 20;}void show(){int a=0;//Outer.this 获取外部类对象的地址值System.out.println(Outer.this.a); //10System.out.println(this.a); //20System.out.println(a); //30}
}
  • 静态内部类 

1.静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象

public class Car { //外部类String carName;int carAge;int carColor;static class Engine { //静态内部类String engineName;};int engineAge;
}

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

OUter.Inner oi = new Outer().Inner();

3.调用非静态方法的格式:先创建对象,用对象调用

4.调用静态方法的格式:外部类名.内部类名.方法名();

  • 局部内部类 

1.将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。
2.外界是无法直接使用,需要在方法内部创建对象并使用。
3.该类可以直接访问外部类的成员,也可以访问方法内的局部变量。

  • 匿名内部类 

  • 匿名内部类

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

  • 匿名内部类的格式
new 类名或者接口名(){重写方法
};
  • 格式的细节

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

  • 使用场景

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

示例: 

public interface Swim {public abstract void swim();}
public class Test {public static void main(String[] args) {new Swim(){@Overridepublic void swim() {System.out.println("重写游泳方法");}};}
}


http://www.ppmy.cn/news/1405254.html

相关文章

pymc,一个灵活的的 Python 概率编程库!

目录 前言 安装与配置 概率模型 贝叶斯推断 概率分布 蒙特卡罗采样 贝叶斯网络 实例分析 PyMC库的应用场景 1. 概率建模 2. 时间序列分析 3. 模式识别 总结 前言 大家好,今天为大家分享一个超强的 Python 库 - pymc Github地址:https://gith…

JavaScript 对象管家 Proxy

JavaScript 在 ES6 中,引入了一个新的对象类型 Proxy,它可以用来代理另一个对象,并可以在代理过程中拦截、覆盖和定制对象的操作。Proxy 对象封装另一个对象并充当中间人,其提供了一个捕捉器函数,可以在代理对象上拦截…

Qt中实现域(Unix)套接字通信

Qt中实现域&#xff08;Unix&#xff09;套接字通信可以使用QLocalServer和QLocalSocket类。以下是一个简单的示例&#xff0c;演示了如何在两个Qt应用程序之间使用域套接字进行通信。 一、在服务器端&#xff1a; cpp Copy code #include <QtWidgets> #include <QL…

Linux(centos7)部署spark

Spark部署模式主要有4种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、Spark On Yarn模式(使用YARN作为集群管理器)和Spark On Mesos模式(使用Mesos作为集群管理器)。 下面介绍Local模式(单机模式)、跟Spark On Yarn模式(使用YARN作为集…

OpenHarmony实战:轻量级系统之子系统移植概述

OpenHarmony系统功能按照“系统 > 子系统 > 部件”逐级展开&#xff0c;支持根据实际需求裁剪某些非必要的部件&#xff0c;本文以部分子系统、部件为例进行介绍。若想使用OpenHarmony系统的能力&#xff0c;需要对相应子系统进行适配。 OpenHarmony芯片适配常见子系统列…

Git常用语句

设置用户名 git config --global user.name "用户名" git config --global user.email "邮箱"查看git用户信息 cat ~/.gitconfig初始化本地库 git initclone指定分支的代码 git clone -b my_branch gitgitlabxxxxxxxxxxxxxxxxxxxxxx.gitpush三件套 gi…

Golang- 邮件服务,发送邮件

依赖 go get -u github.com/jordan-wright/email文档 文档 示例代码 邮箱的相关配置 # email configuration email:port: 25 # 端口要配置25 否则可能出现EOF错误from: xxx1qq.comhost: smtp.qq.comis-ssl: truesecret: xxxxxnickname: 大锦余发送邮件代码 package utili…

合宙4G模块Air724UG调试过程(短信发送、上传数据到华为云IOT)

合宙Air724UG-4G模块AT指令调试接线演示 一、前言 上海合宙Air724UG模块是一款高性能的4G Cat.1通信模组(全网通模块,支持移动、联通、电信,支持短信和网络通信),为开发者提供了丰富的接口和开发方式。 在本文中,将详述调试与集成该模块的关键步骤: (1)从基础硬件配…

PyTorch深度学习——框架简介

深度学习的算法是高度结构化的&#xff0c;主要组成部分是线性变换、激活函数、反向传播和梯度优化等模块&#xff0c;实际应用中&#xff0c;为了方便算法的实现&#xff0c;常会将算法模型抽象成对张量的一系列计算&#xff0c;并将计算设计的一些算法抽象层应用程序接口API供…

dm8 开启归档模式

dm8 开启归档模式 1 命令行 [dmdbatest1 dm8]$ disql sysdba/Dameng123localhost:5237服务器[localhost:5237]:处于普通打开状态 登录使用时间 : 3.198(ms) disql V8 SQL> select name,status$,arch_mode from v$database;行号 NAME STATUS$ ARCH_MODE ----------…

数字化营销:电子元器件商城的新战略路径

数字化营销对于电子元器件商城来说是一种重要的新战略路径&#xff0c;可以通过以下方式实施&#xff1a; 建立网上商城平台&#xff1a;搭建一个用户友好的网上商城平台&#xff0c;提供方便快捷的在线购物体验。通过优化网站界面设计、提供多样化的搜索和筛选功能&#xff0c…

uniapp路由传参存在数据类型失真的问题

export default {methods: {jump() {// 通过params传参this.$Router.push({name: demo, params: {number:1,name: 123,value: null}})}} }目标模块接收参数&#xff1a; export default {onLoad() {// 获取参数const {number,name, value} this.$Route.queryconsole.log(numb…

CITE 2024 开幕在即,共赴电子制造业一体化协同增长

“展望2024年&#xff0c;人工智能的热点将持续引领行业趋势&#xff0c;全球对算力的需求预计将持续快速增长。人工智能在前沿技术的开发、产品的商业化落地、市场开拓以及产业链布局等方面的竞争将进一步加剧。 智能可穿戴设备、智能家居等新兴消费电子产品&#xff0c;经过过…

Python 之 Flask 框架学习

毕业那会使用过这个轻量级的框架&#xff0c;最近再来回看一下&#xff0c;依赖相关的就不多说了&#xff0c;直接从例子开始。下面示例中的 html 模板&#xff0c;千万记得要放到 templates 目录下。 快速启动 hello world from flask import Flask, jsonify, url_forapp F…

争光树脂邀您到场参观2024年第13届生物发酵展

参展企业介绍 宁波争光树脂有限公司成立于2006年11月&#xff0c;是浙江争光实业股份有限公司的全资子公司&#xff0c;公司专业生产离子交换树脂&#xff0c;产品的应用领域主要涉及电厂、核能、石油、化工、轻工、医药、食品、饮料、冶金、环保、生物等领域&#xff0c;年生…

vue源码解析——vue如何将template转换为render函数

Vue 将模板&#xff08;template&#xff09;转换为渲染函数&#xff08;render function&#xff09;是 Vue 编译器的核心功能&#xff0c;它是 Vue 实现响应式和虚拟 DOM 的关键步骤。在 Vue 中&#xff0c;模板&#xff08;template&#xff09;是开发者编写的类似 HTML 的代…

WPF-基础及进阶扩展合集(持续更新)

目录 一、基础 1、GridSplitter分割线 2、x:static访问资源文件 3、wpf触发器 4、添加xaml资源文件 5、Convert转换器 6、多路绑定与多路转换器 二、进阶扩展 1、HierarchicalDataTemplate 2、XmlDataProvider从外部文件获取源 3、TextBox在CellTemplate中的焦点问题…

本地master分支推送远程main分支

初始化 git init关联远程 git remote add origin http://192.168.199.162:1001/jionghui/web-iqc.git修改本地名称 git branch -m master main拉去main 代码 git pull origin main推送 git add . git commit -m 代码 git push origin main

表白墙项目(JAVA实现)

1、在html里 class使用. id使用# 2、记得引入响应依赖&#xff08;举例lombok&#xff09; 3、messageController package com.example.demo.demos.web; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; i…

Linux 内核的构建块:深入探索 C 结构体的应用

Linux 内核的构建块&#xff1a;深入探索 C 结构体的应用 Linux 内核&#xff0c;作为操作系统的中心和基础&#xff0c;承担着调度处理器、管理内存、处理输入/输出&#xff08;I/O&#xff09;等各种底层任务。要实现这些复杂的功能&#xff0c;内核的编写借助了 C 语言强大…