黑马程序员技术交流社区
标题:
关于匿名内部类的名字?
[打印本页]
作者:
抽烟男孩
时间:
2013-4-15 08:35
标题:
关于匿名内部类的名字?
本帖最后由 抽烟男孩 于 2013-4-15 13:26 编辑
我在Test类中定义匿名outer类,在java虚拟机中匿名类的名字是什么?
class Out{
void show(){
System.out.println("this is Out class.");
}
}
public class Test{
public static void main(String args[]){
Test test=new Test();
test.show();
}
//在这个方法中构造了一个匿名内部类
private void show(){
Out anonyInter=new Out(){// 获取匿名内部类实例
void show(){//重写父类的方法
System.out.println("I want to know my name");
}
};
anonyInter.show();// 调用其方法
}
}
复制代码
作者:
林声荣
时间:
2013-4-15 08:58
兄台,你这句代码:"13.Out anonyInter=new Out(){// 获取匿名内部类实例"应该不是创建的匿名类对象吧,只是单单创建一个父类Out的对象吧,因为Out类只是一个普通类,匿名类一般是继承和实现一个接口,然后根据需要覆写方法; 匿名内部类的格式:new 父类或者接口(){定义子类的内容},匿名类其实就是匿名子类的对象,至于“在java虚拟机中匿名类的名字是什么”我就不晓得了、、
作者:
通行天下
时间:
2013-4-15 09:25
本帖最后由 通行天下 于 2013-4-15 09:36 编辑
/*
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖,可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。
*/
abstract class AbsDemo
{
abstract void show();
}
class Outer
{
int x = 3;
/*
//这个只是普通的内部类
class Inner extends AbsDemo
{
int num = 90;
void show()
{
System.out.println("show :"+num);
}
void abc()
{
System.out.println("hehe");
}
}
*/
public void function()
{
//下面这个就是匿名内部类啦!!
AbsDemo d = new AbsDemo() //这句就存在多态!!!
{
int num = 9;
//复写show()方法
void show()
{
System.out.println("num==="+num);
}
//子类还有自己的方法abc()。
void abc()
{
System.out.println("haha");
}
}; //千万要记住加这个";"啊!!!
d.show();
//d.abc();//编译失败,因为多态中编译看左边,父类中没有abc()这个方法,故会失败。
}
}
class InnerClassDemo4
{
public static void main(String[] args)
{
new Outer().function();
}
}
看懂这个例子,你就能明白啦!
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2