iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java的内层类和外层类有什么区别
  • 181
分享到

Java的内层类和外层类有什么区别

2023-06-03 05:06:20 181人浏览 八月长安
摘要

本篇内容介绍了“Java的内层类和外层类有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!内层类就是在另一个类的内部定义的一个类,定义

本篇内容介绍了“Java的内层类和外层类有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!


内层类就是在另一个类的内部定义的一个类,定义这个类的类被称作外层类.内层类最大的优点在于它拥有对在外层类中定义的所有变量和方法的访问权.这也是内层类非常适合于创建适配器的原因;内层类的另一个优点是用户可以看到它们实例化一个接口的实例,如下代码(这
是按钮单击事件的代码):
//outer class is "Frame1"
button1.addActionListener(new java.awt.event.ActionListener(){
public void actionPerfORMed(ActionEvent e){
button1_actionPerformed(e); //button1_actionPerformed(e)方法定义在Fr
ame1中
}
});
其中:
java.awt.event.ActionListener(){
public void actionPerformed(ActionEvent e){
button1_actionPerformed(e);
}
}
这就是定义的一个内层类!事实上ActionListener是一个接口,其后的{}中的内容是这个内层类的唯一的一个方法:public void actionPerformed(ActionEvent e);这个内层类没有任何属性.这个方法中的唯一动作就是调用了按钮单击的方法----button1_actionPerformed
(e)
----这个方法在外层类Frame1中定义:我们的处理就在这个方法中,比如我们可以写:
void button1_actionPerformed(ActionEvent e){
System.exit(0);
}
在这里,我们看到了内层类在调用外层类的方法----button1_actionPerformed(e).同时,我们注意到该内层类定义的前面的"new",她把这个内层类实例化了!
匿名类和命名类
在上面这段代码中,定义的内层类没有类名,这是因为这个类只被使用了一次,是一个"一次性"类,即匿名类.不用担心这个类的名字,Java会在背后帮我们做这些.在编译之后,可以在项目目录下找到这些类,它们具有这样的名字:Frame1$1.class,Frame1$2.class等等,以此类推.我们也可以使用这项技术如:
Button newButton = new Button(){
public void someNewMethod(){

}
};
这里,newButton对象是正常的java.awt.Button,其中含有为它定义的一个额外方法.当想在一个内层类内创建多个对象时,要使用命名类,而不要使用匿名类.实际上命名类在本质上和匿名类没有什么不同,其代码如下:
public Frame1 extends DecoratedFrame{
...
public Frame1(){
...
try{
jbInit();
}
catch(Exception e){
e.printStackTrace();
}
} //end of Frame1 constructure
private void jbInit() throws Exception{
...
button1.addActionListener(new Button1Adapter());
...
} //end of jbInit() method
class Button1Adapter implements java.awt.event.ActionListener{
public void actionPerformed(ActionEvent e){
button1.actionPerformed(e);
}
}
void button1_actionPerformed(ActionEvent e){

}
}
这里,为名为Button1Adapter的一个类提供了正常的定义.这个类实现ActionListener接口.
new创建适配器的一个实例,可以将其余button1对象注册到一起.内层类将会拥有这样的文件名:Frame1$Button1Adapter.class.
上面的代码也可以不用内层类来实现.但标准的方法是应该使用内层类.各位如果感兴趣的话,也可以试试不用内层类来实现上述代码...

“Java的内层类和外层类有什么区别”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java的内层类和外层类有什么区别

本文链接: https://www.lsjlt.com/news/232877.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java的内层类和外层类有什么区别
    本篇内容介绍了“Java的内层类和外层类有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!内层类就是在另一个类的内部定义的一个类,定义...
    99+
    2023-06-03
  • c++内部类和外部类有什么区别
    在C++中,内部类和外部类的主要区别在于其访问权限和作用域。 内部类是在另一个类的内部声明的类,在外部类的作用域内,内部类可以访...
    99+
    2024-04-02
  • 二层、三层交换机是什么?有什么区别?
    作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解二层交换机和三层交换机是什么,以及他们的区别。 目录 一、二层交换机是什么? 二、二层交换机的...
    99+
    2023-09-10
    网络
  • java静态类和非静态类有什么区别
    Java中,静态类和非静态类有以下区别:1. 静态类:静态类是使用static关键字修饰的类。静态类不能被实例化,也就是不能创建静态...
    99+
    2023-08-24
    java
  • Java和ABAP里的外部类和内部类是什么
    这篇文章主要讲解了“Java和ABAP里的外部类和内部类是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java和ABAP里的外部类和内部类是什么”吧!JavaOuter class n...
    99+
    2023-06-04
  • java接口和抽象类有什么区别
    Java接口和抽象类都是用来实现多态性的机制,但是它们有一些重要的区别:1. 实现方式:接口是通过实现关键字"implements"...
    99+
    2023-08-15
    java
  • 三层架构和MVC的区别是什么
    本篇内容主要讲解“三层架构和MVC的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“三层架构和MVC的区别是什么”吧!三层架构:1:数据访问层:主要是对...
    99+
    2024-04-02
  • Java中引用类型和原始类型有什么区别
    本篇文章给大家分享的是有关Java中引用类型和原始类型有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。另...
    99+
    2023-06-17
  • java抽象类与普通类有什么区别
    Java抽象类与普通类有以下区别:1. 实例化:抽象类不能被实例化,即不能创建抽象类的对象,而普通类可以被实例化。2. 继承:子类继...
    99+
    2023-09-22
    java
  • Java 继承的层次结构:子类、父类和祖先
    在 Java 面向对象编程中,类和对象构成了一个层次结构。类是对象的蓝图,定义了对象的属性和方法。对象是类的实例,具有特定于该实例的属性和方法。 继承 继承是一种面向对象编程中的重要概念,它允许一个类(子类)从另一个类(父类)继承属性和方...
    99+
    2024-03-12
    对象层次结构
  • php抽象类和普通类有什么区别
    PHP中,抽象类和普通类有以下区别:1. 定义方式:抽象类使用关键字`abstract`定义,普通类不使用。2. 实例化:抽象类不能...
    99+
    2023-08-09
    php
  • 为什么类型[]T1和[]T2没有共享相同底层类型,即使不同的类型T1和T2共享相同的底层类型?
    ...
    99+
    2024-04-02
  • string类和stringbuffer类的区别是什么
    String类和StringBuffer类的主要区别是可变性和线程安全性。1. 可变性:String类是不可变的,即一旦创建就不能被...
    99+
    2023-09-14
    string
  • python函数和类有什么区别
    python中函数与类的区别有以下几点规则不同类是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型;而函数必须声明后才可以被调用,调用格式为:函数名(实参)调用时函数名后的小...
    99+
    2024-04-02
  • java的内部类和外部类怎么使用
    本篇内容介绍了“java的内部类和外部类怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、为何使用内部类内部类提供了更好的封装,只有...
    99+
    2023-06-22
  • java类对象和实例对象有什么区别
    在Java中,一个类是一个模板或者蓝图,它定义了对象的属性和行为。而一个类对象是指类本身,可以通过类名访问静态属性和方法。 另一方面...
    99+
    2023-10-24
    java
  • Java String类和StringBuffer类的区别介绍
     关于java的字符串处理我们一般使用String类和StringBuffer类 那么String类和StringBuffer类的区别在什么地方呢 1、String是不可变...
    99+
    2024-04-02
  • 在java中接口和抽象类有什么区别
    java中接口和抽象类的区别有:接口是公开的,不能有私有的方法或变量,而抽象类是可以有私有方法或私有变量的。接口强调特定功能的实现,而抽象类强调所属关系。抽象类的子类使用extends来继承,而接口必须使用implements来实现接口。抽...
    99+
    2024-04-02
  • java抽象类和接口的区别是什么
    这篇文章主要介绍“java抽象类和接口的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java抽象类和接口的区别是什么”文章能帮助大家解决问题。区别抽象类和子类是is的关系,接口是like...
    99+
    2023-06-30
  • C#中引用类型和值类型有什么区别
    在C#中,引用类型和值类型是两种不同的数据类型。 值类型是直接存储在堆栈中的数据,它们保存的是实际的数据值。当值类型的变量被赋值给另...
    99+
    2024-03-07
    C#
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作