Java 第十一章 GUI编程(3)

devtools/2025/3/22 14:54:03/

目录

内部类

内部类定义

内部类的特点

匿名内部类

格式:

内部类的意义

实例


内部类


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

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


内部类定义

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

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

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

内部类的特点

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

匿名内部类

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

格式:

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

重写抽象方法;

}

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

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

内部类的意义

1.封装性

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

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

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);}
}

实例(设置内部线程类)

java"> //为我们发送按钮注册事件监听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.ppmy.cn/devtools/169173.html

相关文章

简化神经元模型7 -- GIF Model

Hindmarsh-Rose 模型 目录 0. 写在前面 1. GIF 模型的定义 2. GIF 模型的动力学分析 2.1. 角度一:GIF 模型的变量较多 2.2. 角度二:GIF 模型的更新规则较为复杂多 4. 分析过程所用到的一系列 BrainPy 代码 0. 写在前面 前面介绍了: Hodgkin-…

【最后203篇系列】021 Q201再计划

忙了一周,终于到周末有时间再细细想这个问题了。这周还是不经意的弥补了kv硬盘存储库这个小空白的,这样也有助于构建更好的Q201。 计划是到6.1再发版,之所以留那么长时间,一方面是因为平时的确忙,另一方面则是可以有更…

【C++进阶】try块和异常处理

目录 一、异常处理概述 1.1 什么是异常 1.2 为什么需要异常处理 1.3 异常处理基本框架 二、异常处理核心机制 2.1 基本语法要素 2.2 异常传播机制 2.3 异常安全保证 三、try 块和 catch 块的使用 3.1 简单的 try-catch 示例 3.2 多个 catch 块的使用 3.3 catch 块的…

手动集成sqlite的方法

注意到sqlite有backup方法(https://www.sqlite.org/backup.html)。 也注意到android中sysroot下,没有sqlite3的库,也没有相关头文件。 如果要使用 sqlite 的backup,那么就需要手动集成sqlite代码到项目中。可以如下操…

Sqoop安装部署

Apache Sqoop 简介 Sqoop(SQL-to-Hadoop)是 Apache 开源项目,主要用于: 将关系型数据库中的数据导入 Hadoop 分布式文件系统(HDFS)或相关组件(如 Hive、HBase)。 将 Hadoop 处理后…

HTML 写一个计算器

<!DOCTYPE html> <html> <head><meta charsetutf-8/><title>Calculator</title><style id"jsbin-css">div, span {margin: 0;padding: 0;font-weight: bold;font: bold 16px Arial, sans-serif;/*禁止选中文本*/-moz-user…

Kubernetes Init 容器:实现 Nginx 和 PHP 对 MySQL 的依赖检查

在设计 Kubernetes Pod 时&#xff0c;如果需要在启动 Nginx 和 PHP 之前等待 MySQL 启动完成&#xff0c;可以通过 初始化容器&#xff08;initC&#xff09; 来实现。初始化容器可以用于检查 MySQL 是否可用&#xff0c;只有在 MySQL 可用后&#xff0c;才会继续启动主容器&a…

ATT 汇编常用指令

汇编常用指令# 1、操作数 立即数&#xff1a;表示常数值 表示方法&#xff1a;"$"标准C表示法表示的整数 例&#xff1a;$0x1F 寄存器&#xff1a;表示某个寄存器的内容 表示方法&#xff1a;"%"寄存器的名称 例&#xff1a;%eax 内存引用&#xff1a;会…