您的位置:首页 > 职场人生

java内部类常见面试题汇总

2016-04-18 17:13 369 查看
1.根据注释填写(1),(2),(3)处的代码

public class Test{
public static void main(String[] args){
// 初始化Bean1
(1)
bean1.I++;
// 初始化Bean2
(2)
bean2.J++;
//初始化Bean3
(3)
bean3.k++;
}
class Bean1{
public int I = 0;
}

static class Bean2{
public int J = 0;
}
}

class Bean{
class Bean3{
public int k = 0;
}
}

从前面可知,对于成员内部类,必须先产生外部类的实例化对象,才能产生内部类的实例化对象。而静态内部类不用产生外部类的实例化对象即可产生内部类的实例化对象。
  创建静态内部类对象的一般形式为:  外部类类名.内部类类名 xxx = new 外部类类名.内部类类名()

  创建成员内部类对象的一般形式为:  外部类类名.内部类类名 xxx = 外部类对象名.new 内部类类名()

因此,(1),(2),(3)处的代码分别为:

// 1
Test t=new Test();
Test.Bean1 b1=t.new Bean1();

// 2
Test.Bean2 b2=new Test.Bean2();

// 3
Bean b=new Bean();
Bean.Bean3 b3=b.new Bean3();

2.下面这段代码的输出结果是什么?

public class Test {
public static void main(String[] args) {
Outter outter = new Outter();
outter.new Inner().print();
}
}

class Outter
{
private int a = 1;
class Inner {
private int a = 2;
public void print() {
int a = 3;
System.out.println("局部变量:" + a);
System.out.println("内部类变量:" + this.a);
System.out.println("外部类变量:" + Outter.this.a);
}
}
}结果:
3
2
1

内部类详细学习:

点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: