Java 第十一章 GUI编程(3)

目录

内部类

内部类定义

内部类的特点

匿名内部类

格式:

内部类的意义

实例


内部类


   ● 把类定义在另一个类的内部,该类就被称为内部类。

   ● 如果在类 Outer 的内部再定义一个类 Inner,此时类 Inner 就称为内部类 (或称为嵌套类),而类 Outer 则称为外部类(或称为宿主类)。


内部类定义

内部类——就是位于外部类成员位置的类

特点:可以使用外部类中所有的成员变量和成员方法(包括private的)

class Outer {private int age = 20;class Inner {public void show() {System.out.println(age);}}}

内部类的特点

  • 内部类仍然是一个独立的类,在编译之后内部类会被编译成独立 的.class文件,但是前面冠以外部类的类名和$符号。
  •  内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部 类可以自由地访问外部类的成员变量,无论是否为 private 的。

匿名内部类

   匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。

格式:

new 接口名称/抽象类名称() {

重写抽象方法;

}

注:在实际开发中,我们常常遇到这样的情况:一个接口/抽象类的方法的某个实现方 式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类。此时可以 使用匿名内部类的方式,可以无需创建新的类,减少代码冗余。

public interface IA {abstract void fun1();}new IA() {@Override public void fun1() {System.out.println("匿名类实现fun1");}};

内部类的意义

1.封装性

   将只有在某个类中使用的功能定义在内部中,并可以使用不同访问权限修饰控制

2.实现多继承 java是不支持多继承的,多继承有一个致命性的缺陷, 容易出现钻石继承结构,例如图。

public class Father{public string powerul="市长";
}
publie class Mother{public string wealthy=" 百万";
}
public class son {
class xtends Father extends Father{
}
c1ass xtends Mother extends Mother{
}
publie void sayHello(}{String father new xtends rather().powerul;String mother = new xtends Mother().wealthv;System.out.println("my father is:" + father + "my mother has:" + mother);}
}

实例(设置内部线程类)

 //为我们发送按钮注册事件监听button1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//获取输入的聊天内容String s = textField1.getText();if (s.length()==0) {JOptionPane.showMessageDialog(null, "聊天内容不能为空!");return;}//发送聊天内容try { //拼接聊天内容 把账户,发送时间,聊天内容s= account+"  "+dataUntil.strdom(new Date())+"\n"+s+"\n";dataOutputStream.writeUTF(s);textField1.setText("");} catch (IOException ex) {JOptionPane.showMessageDialog(null, "发送失败" );}}});//来到聊天窗口后,就会随时有别的客户端发送消息,在聊天窗口中,循环监听来自服务器发送的消息new ReceiveThread().start();//启动监听线程}//创建接收服务器发送的消息的线程private class ReceiveThread extends Thread {boolean mark = true;@Overridepublic void run() {while (mark){//如果接收到消息就会传入消息框中try {String s = dataInputStream.readUTF();textArea1.append(s);} catch (IOException e) {mark = false;}}}}

 

 

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

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

相关文章

uniapp 实现的下拉菜单组件

采用 uniapp 实现, 是一款具备丝滑折叠、展开动画的下拉菜单,支持 vue2、vue3;适配 web、H5、微信小程序(其他平台小程序未测试过,可自行尝试) 可到插件市场下载尝试: https://ext.dcloud.net.cn/plugin?i…

【一维前缀和与二维前缀和(简单版dp)】

1.前缀和模板 一维前缀和模板 1.暴力解法 要求哪段区间,我就直接遍历那段区间求和。 时间复杂度O(n*q) 2.前缀和 ------ 快速求出数组中某一个连续区间的和。 1)预处理一个前缀和数组 这个前缀和数组设定为dp,dp[i]表示:表示…

ubuntu部署运行xinference全精度对话deepseek本地部署图文教程

前置环境搭建劳请移步往期 source activate 自己环境名启动python3.12环境安装xinference, 按教程敲命令,wheel包与wsl的通用,pip install 包名。 vllm引擎,transform引擎也会顺带自动装上了。 后续操作请参照往期教程。本地部署模…

Python 面向对象三大特性深度解析

一、封装(Encapsulation) 1. 私有化实现 class BankAccount:def __init__(self, account_holder, balance0):self.__holder account_holder # 双下划线私有属性self.__balance balance# 公有方法访问私有属性def deposit(self, amount):if amount &…

星越L_陡坡缓降使用讲解

目录 1.陡坡缓降 1.陡坡缓降 中控屏下滑-点击陡坡缓降功能 35km/h以下时生效。35km/h-60km/h该功能暂停 60km/h以上该功能关闭

多路FM调频广播解调器:多路电台FM广播信号一体化解调处理方案

多路FM调频广播解调器:多路电台FM广播信号一体化解调处理方案 支持OEM型号开放式协议支持二次开发设计 北京海特伟业科技有限公司任洪卓发布于2025年3月21日 在信息传播领域,FM调频广播媒体以其独特的优势持续发挥着重要作用。为了应对日益增长的多路…

报错 - redis - Unit redis.service could not be found.

报错: Unit redis.service could not be found.Could not connect to Redis at 127.0.0.1:6379: Connection refused解决方法: 检查状态、有必要的话 重新安装 Linux 上查看状态 systemctl status redis显示以下内容,代表正常服务 出现下面…

Guava:Google开源的Java工具库,太强大了

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

Pytorch中layernorm实现详解

平时我们在编写神经网络时,经常会用到layernorm这个函数来加快网络的收敛速度。那layernorm到底在哪个维度上进行归一化的呢? 一、问题描述 首先借用知乎上的一张图,原文写的也非常好,大家有空可以去阅读一下,链接放…

六十天前端强化训练之第二十五天之组件生命周期大师级详解(Vue3 Composition API 版)

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、生命周期核心知识 1.1 生命周期全景图 1.2 生命周期钩子详解 1.2.1 初始化阶段 1.2.2 挂载阶段 1.2.3 更新阶段 1.2.4 卸载阶段 1.3 生命周期执行顺序 1.4 父子组…

Burp Suite 代理配置与网络通信

目录 1. 引言 2. Burp 代理基础配置 2.1 浏览器代理设置 2.2 Burp 监听端口配置 2.3 常见错误排查 3. 网络问题解决 3.1 端口占用检查 3.2 防火墙配置 3.3 证书信任问题 4. 虚拟机环境配置 4.1 NAT 模式与端口转发 4.2 桥接模式配置 4.3 跨设备访问测试 5. 技术概…

numpy学习笔记16: 1000 次独立随机游走实验(绘制其分布直方图,同时叠加理论正态分布曲线)

numpy学习笔记16: 1000 次独立随机游走实验(绘制其分布直方图,同时叠加理论正态分布曲线) 以下是这段代码(全部代码在最后)的详细分步解释,结合统计学原理和可视化技巧: 1. 代码功能概述 这段代码通过 1000 次独立随机游走实验&…

C# 项目06-计算程序运行时间

实现需求 记录程序运行时间,当程序退出后,保存程序运行时间,等下次程序再次启动时,继续记录运行时间 运行环境 Visual Studio 2022 知识点 TimeSpan 表示时间间隔。两个日期之间的差异的 TimeSpan 对象 TimeSpan P_TimeSpa…

KNN算法

一、KNN算法介绍 KNN 算法,也称 k邻近算法,是 有监督学习 中的 分类算法 。它可以用于分类或回归问题,但它通常用作分类算法。 二、KNN算法流程 1.计算已知类别数据集中的点与当前点的距离 2.按照距离增次序排序 3.选取与当前点距离最小…

星越L_可调悬挂使用讲解

目录 1.可变阻尼设置 1.可变阻尼设置

G-Star 校园开发者计划·黑科大|开源第一课之 Git 入门

万事开源先修 Git。Git 是当下主流的分布式版本控制工具,在软件开发、文档管理等方面用处极大。它能自动记录文件改动,简化合并流程,还特别适合多人协作开发。学会 Git,就相当于掌握了一把通往开源世界的钥匙,以后参与…

html5炫酷3D立体文字效果实现详解

炫酷3D立体文字效果实现详解 这里写目录标题 炫酷3D立体文字效果实现详解项目概述技术实现要点1. 基础布局设置2. 动态背景效果3. 文字渐变效果4. 立体阴影效果5. 悬浮动画效果 技术难点及解决方案1. 文字渐变动画2. 立体阴影效果3. 性能优化 浏览器兼容性总结 项目概述 在这个…

《白帽子讲 Web 安全》之开发语言安全深度解读

目录 引言 1.PHP 安全 1.1变量覆盖 1.2空字节问题 1.3弱类型 1.4反序列化 1.5安全配置 2Java 安全 2.1Security Manager 2.2反射 2.3反序列化 3Python 安全 3.1反序列化 3.2代码保护 4.JavaScript 安全 4.1第三方 JavaScript 资源 4.2JavaScript 框架 5.Node.…

django设置admin的排列顺序,耗3小时【躲坑指南】

django 项目中,这个数据栏目的显示排列顺序我希望更贴近业务 比如要让【商品货品信息】中的9个数据表根据人为规定来进行排序 结果:工程量很大。 能够实现人为的自定义排序 最简单的设置就是给模型添加号数标记 主应用中创建admin–设置了其中一个应用…

macOS使用brew切换Python版本【超详细图解】

目录 一、更新Homebrew仓库 二、安装pyenv 三、将pyenv添加到bash_profile文件中 四、使.bash_profile文件的更改生效 五、安装需要的Python版本 六、设置全局使用的Python版本 七、检查Python版本是否切换成功 pyenv常用命令 一、更新Homebrew仓库 brew update 这个…