黑马程序员技术交流社区
标题:
有道接口中的内部类的题不会做
[打印本页]
作者:
崔自成
时间:
2013-5-2 13:06
标题:
有道接口中的内部类的题不会做
要求:创建一个包含内部类的接口,该内部类中有一个static方法,它将调用接口中的方法并显示结果,实现这个接口,并将这个实现的一个实例传递给这个方法。
class Test
{
void function(){
new A(){
public void print(){};
//new B().show(); 为什么不能new B
//B.show(); 这样也不行。
};
}
public static void main(String[] args)
{
new Test().function();
}
}
interface A
{
class B implements A
{
public void print(){
System.out.println("BBBBB");
}
static void show(){
new B().print();
}
}
void print();
}
复制代码
作者:
wudongzhe
时间:
2013-5-2 13:50
本帖最后由 吴东泽 于 2013-5-2 13:54 编辑
修改如下:
class Test3
{
void function(){
new A(){
public void print(){
B.show(); //调用方法要在方法中
};
}.print();//创建匿名内部类 还需要调用print才能打印
}
public static void main(String[] args)
{
new Test3().function();
}
}
interface A
{
class B implements A
{
public void print(){
System.out.println("BBBBB");
}
static void show(){
new B().print();
}
}
void print();
}
复制代码
作者:
张洪慊
时间:
2013-5-2 16:37
本帖最后由 张洪慊 于 2013-5-2 16:39 编辑
我是这样写的,以前还从没干过在接口中定义内部类- -!
在写的过程中对比了下 类中的内部类:
interface Out
{
public abstract void func();
class In{ //该内部类可以有static/abstract/abstract static修饰符
//经过测试:内部类中含有静态方法,该接口中的内部类可以不是静态
//这点和类中的内部类不相同
static void method(ImpOut i){
i.func();//ImpOut //访问在ImpOut中复写的func
}
}
}
class ImpOut implements Out{
public void func(){
System.out.println("ImpOut");
}
public static void main(String[] args){
new Out.In().method(new ImpOut());//创建接口Out的内部类对象访问method
Out.In.method(new ImpOut());//经过测试在接口中的内部类(非静态)中的静态成员还可以直接通
//Out.In访问
//这点在类中的内部类,只有内部类也是静态才可以
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2