Java中的匿名内部类

简介:
通常通过继承某个类或实现某个接口的方式来编写代码,但是有时候某一些代码只使用一次,就没有必要写专门写一个子类或实现类了,可以采用匿名内部类的写法。最常用的场景是线程方面的应用。

一、不使用匿名内部类
①继承
abstract class Player
{
public abstract void play();
}

public class FootBallPlayer extends Player
{
public void play()
{
System.out.println("踢足球");
}
}

public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
Player p1 = new FootBallPlayer();
p1.play();
}
}

②接口
interface IPlayer
{
public void play();
}

public class IPlayFootballImpl implements IPlayer
{
public void play()
{
System.out.println("踢足球");
}
}

public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
IPlayer ip1 = new IPlayFootballImpl();
ip1.play();
}
}


二、使用匿名内部类
①继承
abstract class Player
{
public abstract void play();
}


public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
Player p2 = new Player() {
public void play()
{
System.out.println("打篮球");
}
};
p2.play();
}
}

②接口
interface IPlayer
{
public void play();
}

public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
IPlayer ip2 = new IPlayer() {
public void play()
{
System.out.println("打篮球");
}
};
}
}

三、线程中的应用
实现线程的方法有两种:①继承Thread类 ②实现Runnable接口。给出用匿名类实现的例子:

public class ThreadTest
{
public static void main(String[] args)
{
// 继承Thread类
Thread thread = new Thread() {
@Override
public void run()
{
while (true)
{
try
{
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
System.out.println(this.getName());
}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
}
}
};
thread.start();

// 实现Runnable接口
Thread thread2 = new Thread(new Runnable() {
@Override
public void run()
{
while (true)
{
try
{
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
}
}
});
thread2.start();
}
}
目录
相关文章
|
2天前
|
Java
什么是Java匿名类?
【4月更文挑战第16天】
36 9
什么是Java匿名类?
|
5月前
|
Java
java匿名内部类
java匿名内部类
|
4月前
|
存储 设计模式 安全
匿名内部类 - ( 零基础学java )
匿名内部类 - ( 零基础学java )
29 0
|
7月前
|
Java 测试技术
Java匿名内部类
匿名内部类可以在需要快速创建临时对象的场景中提供更为便捷的实现方式
35 0
|
7月前
|
Java
Java之内部类的详解
Java之内部类的详解
62 0
java-内部类
内部类 内部类既可以访问自身的数据域,也可以访问创建它的外部类对象的数据域 内部类对象总有一个隐式引用,它指向了创建它的外部类的对象 外部类的引用在内部类的构造方法中设置,不必手动设置,编译器会自动在构造方法中生成外部类引用 只有内部类可以是私有的,建议设置为私有的,这样只有外部类的方法才可以构造该对象。 在外部类的作用域中,可以通过OuterClass.InnerClass引用内部类 只有静态内部类可以有静态方法 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.aw
|
Java
Java中静态方法的使用
Java中静态方法的使用
114 0
Java中静态方法的使用
|
Java 编译器
第14篇:Java 的方法重写详解
🌾 重载的方法通过传递给方法的参数的数量和类型来区分。 🌾 重载:① 方法名相同,参数类型或参数数量不同;② 重载与返回值类型、参数名称无关
111 0
第14篇:Java 的方法重写详解

热门文章

最新文章