Java入门习题
内部类部分
1,请使用匿名内部类补足代码
interface Inter{
void show(int a,int b);
void fun();
}
class Demo{
public static void main(String [] args){
//补足代码!!!
}
}
参考答案:
public static void main(String [] args){
Inter inter=new Inter(){
public void show(int a,int b){}
public void fun(){}
};
inter.show(1,2);
inter.fun();
}
2,请简述下列程序运行结果
class A{
int y=6;
class Inner{
static int y=3;
void show(){
System.out.println(y);
}
}
}
class Demo{
public static void main(String [] args){
A.Inner inner=new A().new Inner();
inner.show();
}
}
参考答案:
编译失败,原因:非静态内部类不能定义静态成员
3,请分析以下代码能否被放置在相应的位置上
class Demo{
public void func(){
//位置1
}
class Inner{}
public static void main(String [] args){
Demo d=new Demo();
//位置2
}
}
A.位置1:new Inner();
B.位置2:new Inner();
C.位置2:new d.Inner();
A.位置2:new Demo.Inner();
参考答案:
A 正确
B 错误:成员内部类(非静态内部类)不能被静态方法调用
C、D 错误:正确的创建格式应为 Inner inner=t.new Inner();
解析 成员内部类与成员方法和成员变量一样,应被外部类对象调用,C选项的方式不符合语法规范,D选项错误的原因是Inner是非静态的
4,补全代码
interface Inter{
void func();
}
class Demo{
public static void main(String [] args){
//使用匿名内部类补足代码
}
void show(Inter inter){
t.func();
}
}
仅供参考:
public static void main(String [] args){
new Demo().show(new Inter(){
public void func(){
System.out.println("hello world");
}
});
}