匿名内部类实现接口(匿名内部类实现接口有返回值)

网友投稿 388 2022-12-31


本篇文章给大家谈谈匿名内部类实现接口,以及匿名内部类实现接口有返回值对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享匿名内部类实现接口的知识,其中也会对匿名内部类实现接口有返回值进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

接口的匿名内部类实现

interface IA{
void test();
}
public class TestInnerClass {
public void method(IA ia){
ia.test();
}
public static void main(String[] args) {
TestInnerClass obj = new TestInnerClass();
obj.method(new IA() {

public void test() {
System.out.println("运行匿名内部类的test方法");
}
});
}
}

为什么匿名内部类,必须有继承或者实现接口

这是面向对象编程匿名内部类实现接口的特性决定的
以java为例匿名内部类实现接口
既然是匿名内部类匿名内部类实现接口,它首先是一个类。所有的类都是继承自Object的匿名内部类实现接口,你实现的匿名类匿名内部类实现接口,也就需要继承某个类。如new Button(){}
实现接口也是一种匿名类声明的方法,因为你实现的接口是默认继承Object类的,比如new Runnable(){}

java中的匿名内部类是成员内部类吗?我就很不明白为什么造一个接口的时候匿名内部类是怎么去实现接口的

内部类分为四种:
    静态内部类(static inner classes)
    成员内部类(member inner classes)
    局部内部类(local inner classes)
    匿名内部类(anonymous inner classes)


所以匿名内部类不是成员内部类.


匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。
匿名内部类会隐式地继承一个父类或实现一个接口。


有些接口实现类,往往就需要用一次, 所以不需要名字,代码显得简洁

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ChangFrameDemo extends JFrame {
JPanel jp1, jp2;//2个JPanel对象
JButton jb1;
boolean flag;//用于判断是打开第1还是第2个JPanel
public ChangFrameDemo() {

jp1 = new JPanel();
jp1.add(new JLabel("信息录入"));
jp1.setBackground(Color.YELLOW);
jp2 = new JPanel();
jp2.add(new JLabel("信息查询"));
jp2.setBackground(Color.LIGHT_GRAY);
jb1 = new JButton("切换内容");

JPanel jp3 = new JPanel();
jp3.add(jb1);


add(jp1);
add(jp3, BorderLayout.SOUTH);
setTitle("切换内容窗口");
setSize(380, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
// 第一种写法,写一个类继承于 ActionListener 然后实现它的方法
// MyActionListener ma = new MyActionListener();
// jb1.addActionListener(ma);
// 下面是第二种方法
jb1.addActionListener(new ActionListener() {//事件响应
@Override
public void actionPerformed(ActionEvent e) {
Container pane = jb1.getRootPane().getContentPane();//得到JFrame的底层Pane
flag = !flag;
if (flag) {
pane.remove(jp1);//删除jp1
pane.add(jp2);//添加jp2
} else {
pane.remove(jp2);
pane.add(jp1);
}
pane.validate();//重构界面
pane.repaint();//重新绘制
}
});
}
public static void main(String[] args) {
new ChangFrameDemo();
}
//第一种写法需要的类
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Container pane = jb1.getRootPane().getContentPane();//得到JFrame的底层Pane
flag = !flag;
if (flag) {
pane.remove(jp1);//删除jp1
pane.add(jp2);//添加jp2
} else {
pane.remove(jp2);
pane.add(jp1);
}
pane.validate();//重构界面
pane.repaint();//重新绘制

}

}
}

如果JDK升级到8.0 还支持更简洁的Lambda表达式

关于匿名内部类实现接口和匿名内部类实现接口有返回值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 匿名内部类实现接口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于匿名内部类实现接口有返回值、匿名内部类实现接口的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中方法名称和泛型相同的用法示例
下一篇:开源的接口测试工具是什么(开源的接口测试工具是什么意思)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~