匿名实现接口(接口的匿名化和实例化)

网友投稿 466 2023-01-21


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

本文目录一览:

Java匿名内部类可以实现接口吗

匿名内部类可以用于接口上,只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现。最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口。
具体示例代码如下:
interface
Person
{
public
void
eat();
}
public
class
Demo
{
public
static
void
main(String[]
args)
{
Person
p
=
new
Person()
{
public
void
eat()
{
System.out.println("eat
something");
}
};
p.eat();
}
}
运行结果:eat
something

接口的匿名内部类实现

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方法");
}
});
}
}

为什么这个匿名类实现Runnable接口

这分两个部分;
1.
匿名类
Thread为何要叫做Thread,就是它在重写JDK本来的Thread类
2.JDK本来的Thread类就是实现Runnable接口的,所以自带run方法,所以。。。。。。

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小时内删除侵权内容。

上一篇:基于Spring的RPC通讯模型的使用与比较
下一篇:spring整合redis实现数据缓存的实例代码
相关文章

 发表评论

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