黑马程序员技术交流社区
标题:
匿名类问题
[打印本页]
作者:
大手牵小手
时间:
2015-3-3 21:13
标题:
匿名类问题
abstract class Student
{
abstract void speak();
}
class Teacher
{
void look(Student stu)
{
stu.speak();
}
}
public class example2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Teacher zhang = new Teacher();
zhang.look(new Student()
{
void speak()
{
System.out.println("this is ...");
}
}
);
}
}
复制代码
看不明白这是怎么回事,呜呜。。
作者:
z47057554
时间:
2015-3-3 22:49
本帖最后由 z47057554 于 2015-3-3 22:50 编辑
相当于以下简写,省去了类的名字
abstract class Student
{
abstract void speak();
}
class Teacher
{
void look(Student stu)
{
stu.speak();
}
}
public class example2 {
public static void main(String[] args)
{
// TODO Auto-generated method stub
Teacher zhang = new Teacher();
//跟下面是一样的
class StudentSon extends Student
{
void speak()
{
System.out.println("this is ...");
}
}
//父类指针指向子类对象
Student tempStu=new StudentSon();
zhang.look(tempStu);
}
}
复制代码
作者:
wdhm5423
时间:
2015-3-3 23:04
本帖最后由 wdhm5423 于 2015-3-3 23:08 编辑
匿名内部类:
new A(){}//因为是匿名,没有引用,只能使用一次,下次就找不到它了,方便书写。所以通常直接作为参数传进去(你的那个例子),或者直接运行其中的方法,如new Thread(){这里要复写run()方法}.start(); 好理解这么写:new Thread().start;
正常new类:
A a=new A(){};有引用a,可以再使用。
作者:
大手牵小手
时间:
2015-3-4 15:43
wdhm5423 发表于 2015-3-3 23:04
匿名内部类:
new A(){}//因为是匿名,没有引用,只能使用一次,下次就找不到它了,方便书写。所以通常直接 ...
你好厉害!谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2