问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA中内部匿名类以及接口的使用和作用?

发布网友 发布时间:2022-05-01 22:40

我来回答

3个回答

热心网友 时间:2022-06-24 11:46

Java中内部匿名类的使用

Java中内部匿名类用的最多的地方也许就是在Frame中加入Listner了吧。
如下:

import java.awt.*;
import java.awt.event.*;

public class QFrame extends Frame {
public QFrame() {
this.setTitle("my application");

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});

this.setBounds(10,10,200,200);
}
}

内部匿名类,就是建立一个内部的类,但没有给你命名,也就是没有引用实例的变量。
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
}

new 是建立一个 WindowAdapter对象 ,后面一个 {} 表示这个括号中的操作作用于这个默认的对名象,

而上面的Java程序中后面是一个函数体。这种用法是 Delphi 和 VB 所没有的。
这个用法的作用是:创建一个对象的实例,并且 override 它的一个函数。
打开 WindowAdapter 的代码可以发现。它是一个抽象类。它是对 WindowListener 接口的一个实现。

Frame.addWindowListner(); 的参数是一个 WindowListner ,而实现上是传一个从WindowAdapter 派生出的一个匿名类。

---------------------------------------------------------------
以上观点,纯属个人看法。
如有不同意见,留下名来。
多谢。

----------------------------------------------------------------
补记, java 中的内部匿名类与 Delphi 中的 with 是不是一样的。with 只是指定一个默认的操作对象,是从编辑上来说,减少输入录(执行上也许也会快点)。而 java 中的内部匿名类,着重在于派生一个新类,但不给这个新类指定一个类名。

代码例子如下:

01
02
03 class AClass {
04 String name = new String("");
05
06 AClass() {
07 }
08
09 AClass(String name) {
10 this();
11 this.name = name;
12 }
13
14 public void print() {
15 System.out.println("The name = " + name);
16 }
17 }
18
19 public class QTest {
20 public static void main(String[] args) {
21 (new AClass("RedSoft"){
22 public void print() {
23 System.out.println("the anonymose class print");
24 super.print();
25 }
26 }).print();
27 }
28 }

运行结果:

the anonymose class print
The name = RedSoft

接口因为java不像c++那样能够多继承 所以有了接口,原理和c++里的多继承是一样的,还有就是规范设计

热心网友 时间:2022-06-24 11:46

1)接口不是类,而是一组对类的需求描述,这些类要遵从接口描述的同意格式进行定义。JAVA里是不支持多继承的,但可以实现多个接口。
2)如果再深入局部内部类,可以设想一下,只创建这个类的一个对象,就不用再给它明明了,这个类就是匿名内部类。由于构造器的名字必须与类名相同,而匿名类又没有类名,所以匿名类不能有构造器,而将构造器参数传递给超类的构造器。尤其是在内部类实现接口的时候,不能有任何构造参数。

热心网友 时间:2022-06-24 11:47

接口就是一组没有实现的抽象方法,接口可以扩展(继承),一般做法是用一个抽象类实现接口中的部分公用方法,其他的类就可以继承该抽象类去实现其他未实现的方法

匿名内部类一般就用在swing或awt中的事件监听上面

比如给按钮bt加上事件监听,表示当按下该按钮是要执行的操作
JButton bt = new JButton("bt");
bt.addActionListener(new ActionListener(){
void actionPerformed(ActionEvent e) {
//要执行的操作
}
});
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 匿名内部类? tr面料的价格都是不一样的,这个价格是根据什么来的呢? 匿名内部类是什么? java中的匿名类和内部类的关系?比如匿名类一定是内部类吗?或者内部类一定是匿名类吗? 桔子可以与苹果同时吃吗? 内部类和匿名内部类是什么??有什么作用?? 吃苹果能吃橘子吗? 匿名类的问题 苹果可以和橘子一起煮着吃吗 营养稀饭的做法大全集 请问有谁知道贵阳大数据里有一个平台叫天汇国际做外汇交易的到底正规不 苹果和橘子可以一起煮的吃吗 儿童营养稀饭的做法大全集 吃了苹果可以吃橘子吗? 吃完苹果能吃橘子吗 贵州大数据是传销吗 匿名类到底是干嘛用的,它的主要作用是什么? 贵州慧积地大数据平台服务有限公司怎么样? 橘子能不能和苹果一起吃 匿名类的介绍 t=new Thread(new Runnable(){主体}) Thread是匿名类吗?java java中什么是匿名对象?谢谢! tr面料的衣服好不好 TR面料的介绍 求个microsoft office2010的安装包,最好走百度云,电脑是64位,要能用的 电脑,64位操作器win10想下载家庭版microsoft office2010。在哪里下载? 家装怎么选择电线 家装电线有什么选择标准? 家庭装修电线的选择有哪些标准 电线粗细选择标准 电线怎么选择电线规格? RIO锐澳鸡尾酒是都能发光吗?怎么我买的都不发光的? 明星微博都在晒那个发光瓶是什么? 锐澳鸡尾酒晚上会发光吗 我看到为什么别人的锐澳鸡尾酒的酒瓶还能发光啊,感觉好酷炫好好看的说。 鸡尾酒发光瓶怎么发光? 超市怎么都没卖RIO锐澳鸡尾酒的发光瓶的呢? ? 第一眼看到RIO鸡尾酒的那个发光瓶就被迷倒了,太漂亮了,我都舍不得把视线离开了,可是哪里买我很苦恼 RIO发光瓶,不知道哪里有的啊?? 为什么他们喝的锐欧会发光