关于匿名内部类不太理解
书上写的神神叨叨的实在不理解给了一段代码看也不是很明白
谁能帮我讲讲这段代码和匿名类
package shuzu;
interface A {
public void fun1();
}
class B {
int i=10;
public void get(A a)//声明了一个get方法,用于对A接口的实例化,并调用fun1()方法
{
a.fun1();
}
public void test()
{
this.get(new A()
{
public void fun1()
{
System.out.println(i);
}
}
);
}
}
public class niming {
public static void main(String[] args) {
B b=new B();
b.test();
}
}
[解决办法]
/*
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。
*/
abstract class AbsDemo
{
abstract void show();
}
class Outer
{
int x = 3;
public void function()
{
AbsDemo d = new AbsDemo()
{
int num = 9;
void show()
{
System.out.println("num==="+num);
}
void abc()
{
System.out.println("haha");
}
};
d.show();
}
}
class InnerClassDemo
{
public static void main(String[] args)
{
new Outer().function();
}
}
interface A {
public void fun1();
}
class B {
int i=10;
//----------------- 新建一个内部类,实现接口A
//-----------------
class RealA implements A
{
public void fun1()
{
System.out.println(i);
}
}
//------------------
public void get(A a)//声明了一个get方法, 需要一个实现了接口A的类的对象。
{
a.fun1();
}
public void test()
{
RealA ra=new RealA();//创建一个实现了接口A的对象。
this.get(ra);//这块传进一个实现了接口A的对象。
}
}
public class Niming {
public static void main(String[] args) {
B b=new B();
b.test();
}
}