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.mzph.cn/web/72948.shtml

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

相关文章

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测

Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测 目录 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型多变量回归预…

3DMAX曲线生成器插件CurveGenerator使用方法

1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具,用户可以通过简单的UI界面输入参数,快速生成多条样条线。每条样条线的高度值随机生成,且可以自定义以下参数: 顶点数量:每条…

LiteratureReading:[2023] GPT-4: Technical Report

文章目录 一、文献简明(zero)二、快速预览(first)1、标题分析2、作者介绍3、引用数4、摘要分析(1)翻译(2)分析 5、总结分析(1)翻译(2)…

vm_pwn入门 -- [GHCTF 2025]my_vm

先看基本逻辑 int __fastcall main(int argc, const char **argv, const char **envp) {unsigned __int16 IP; // [rspCh] [rbp-14h] BYREFunsigned __int16 SP; // [rspEh] [rbp-12h] BYREFunsigned __int16 cmd_count; // [rsp10h] [rbp-10h] BYREFunsigned __int16 i; // [r…

CA 机构如何防止中间人攻击

在现代互联网中,中间人攻击(Man-in-the-Middle Attack,简称 MITM)是一种常见的网络攻击方式,攻击者通过拦截和篡改通信双方的信息,进而窃取敏感数据或执行恶意操作。为了防止中间人攻击,证书颁发…

Elasticsearch快速上手与深度进阶:一站式实战教程

目录 1. Elasticsearch 简介 2. 安装与启动 方式 1:Docker 快速安装(推荐) 方式 2:手动安装 3. 基础操作 3.1 创建索引 3.2 插入文档 3.3 查询文档 3.4 更新文档 3.5 删除文档 4. 高级查询 4.1 布尔查询 4.2 范围查询…

闻所闻尽:穿透声音的寂静,照见生命的本真

在《楞严经》的梵音缭绕中,"闻所闻尽"四个字如晨钟暮鼓,叩击着每个修行者的心门。这个源自观世音菩萨耳根圆通法门的核心概念,既是佛门修行的次第指引,更蕴含着东方哲学对生命本质的终极叩问。当我们穿越时空的帷幕&…

回溯法经典练习:组合总和的深度解析与实战

回溯法经典练习:组合总和的深度解析与实战 引言 在算法世界里,回溯法(Backtracking)是解决 组合、排列、子集 等问题的神器。而 “组合总和”(Combination Sum) 问题,更是回溯算法中的经典代表…

传感器研习社:Swift Navigation与意法半导体(STMicroelectronics)合作 共同推出端到端GNSS汽车自动驾驶解决方案

自动驾驶系统单纯依赖感知传感器进行定位在遇到恶劣天气或缺乏车道标线的道路场景时很容易失效。此外,由于激光雷达(LiDAR)、视觉等传感器的成本高昂以及将众多不同组件整合为统一系统的复杂性,都可能增加产品研发成本或延迟产品上…

【人工智能】Ollama 的 API 操作指南:打造个性化大模型服务

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能技术的飞速发展,大型语言模型(LLM)在自然语言处理领域的应用日益广泛。然而,传统的云端模型服务往往面临数据隐私、成本高…

Linux关机重启二三事

、、 1概述 故障是高可用组最常接触的场景,其中包含了进程故障,网络故障、系统故障,硬件故障。掉电、关机和重启作为其中最常见的系统故障,具体的细节还是有些许差异的。本文将从操作系统与主板的行为讲解三者之间的联系与区别。…

算法1--两束求和

题目描述 解题思路 先说一种很容易想到的暴力解法 暴力解法的思路很简单,就是遍历数组,对于每一个元素,都去遍历数组中剩下的元素,判断是否有两个元素的和等于目标值,如果有,就返回这两个元素的下标。 c…

在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译

在Fedora-Workstation-Live-x86_64-41-1.4中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译 应用——系统工具——终端 suozhangfedora:~$ rpm -aq | grep firefox firefox-131.0.2-1.fc41.x86_64 firefox-langpacks-131.0.2-1.fc41.x86_64 fedora41系统自身安装有f…

android 接入google 登录

在 Android 应用中接入 Google 登录功能,可让用户使用他们的 Google 账号快速登录应用。以下是详细的接入步骤和示例代码: 步骤 1:创建 Google API 项目 访问 Google API 控制台,并使用你的 Google 账号登录。点击 “选择项目”,然后点击 “新建项目”,按照提示填写项目…

Redis缓存与数据库 数据一致性保障

为什么要保证数据一致性 只要使用redis做缓存,就必然存在缓存和DB数据一致性问题。若数据不一致,则业务应用从缓存读取的数据就不是最新数据,可能导致严重错误。比如将商品的库存缓存在Redis,若库存数量不对,则下单时…

19.哈希表的实现

1.哈希的概念 哈希(hash)⼜称散列,是⼀种组织数据的⽅式。从译名来看,有散乱排列的意思。本质就是通过哈希函数把关键字Key跟存储位置建⽴⼀个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进⾏快速查找。 1.2.直接定址法…

IoTDB TTL不生效

问题 时序数据库 IoTDB 1.3.0 版本数据库的 TTL 设置为两天,show databases details 看到设置也是正确的,怎么还是可以查到好几天前的数据?因为有很多不活跃的测点,所以专门设置了两天过期,有什么办法可以自动清理呢&…

【C++基础】Lambda 函数 基础知识讲解学习及难点解析

一、引入 在 C 中,我们通常使用函数来完成特定的功能。但有时候,我们需要在一个函数内部定义一个小型的功能块,这时如果单独写一个函数会显得繁琐。C11 引入了 Lambda 函数,它是一种匿名函数,可以在需要的地方直接定义…

OpenCV 基础模块 Python 版

OpenCV 基础模块权威指南(Python 版) 一、模块全景图 plaintext OpenCV 架构 (v4.x) ├─ 核心层 │ ├─ core:基础数据结构与操作(Mat/Scalar/Point) │ └─ imgproc:图像处理流水线(滤…

iStoreOS软路由对硬盘格式化分区(转化ext4)

一、为什么要格式化分区? 格式化硬盘分区是软路由安装或配置过程中的重要步骤,主要用于清除旧数据、优化文件系统、确保系统稳定性和兼容性。 二、通过iStoreOS硬盘格式化步骤 使用场景:Docker迁移到外置移动硬盘为例,考虑兼容现…