本帖最后由 庄星睿 于 2012-7-13 08:26 编辑
1.当创建一个子类时,子类构造器总会调用父类的构造器,那么在创建非静态内部类的子类呢,非静态内部类的子类不一定是内部类,他也可以使一个外部类
上代码:- class Out
- {
- class In
- {
- public In(String msg)
- {
- System.out.println();
- }
- void show(){}
- }
- }
- public class SubClass extends Out.In
- {
- public SubClass()
- {
- //怎样调用父类的构造函数的
- }
- }
复制代码 问题一:他是怎样调用父类的构造函数的?
问题二:既然内部类是外部类的成员,那么是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类,求原理?
问题三:谁了解回调,就是
interface Teacher
{
void work();
}
class Programmer
{
private String name;
public programmer(){}
public programmer(String name)
{
this.name=name;
}
......省略 setter 和getter方法
public void work()
{
System.ot.println(name+"写代码");
}
}
就是说现在有一个人如培训java的老师一样,他既是程序员,同时也是一名老师,也就是说需要定义一个特殊的类,既要实现Teacher接口,也需要实现Programmer父类
用内部类该怎样解决?
如果这样定义
class TeacherProgrammerTest extends Programmer implements Teacher
{
public void work()
{
System.out.println("讲课");
}
}
这样定义只有一个work,只能讲课,不能编程了,肯定不行了,但实际需要teacherprogram类既包含“讲课”的work方法,也包含“编程”的work方法
问题有点多,呵呵
class TeacherProgrammerTest extends Programmer
{
public TeacherProgrammer(String name)
{
super(name);
}
public Teacher getInstance()
{
return new Teacher()
{
public void work()
{
System.out.println("讲课");
}
};
}
public static void main(String[] args)
{
TeacherProgramTest tpt=nw TeacherProgamTest();
tpt.work();
tpt.getInstance().work();
}
}
问题三,今天早上想到了,按照上面的实现,分享一下,顺便大家看看有错没,呵呵,但还有上面两个问题没想通,帮忙解释一下 |