本帖最后由 bjfanxc 于 2014-3-27 14:10 编辑
- //大家玩内部类时需要注意的几个问题,敲代码验证问题,这样记忆比较深刻。
- package com.itheima;
- public class InnerclassTest {
- public static void main(String[] args) {
- //只有当外部类对象存在,内部类才被加载进内存,所以要先创建外部类对象。
- Outer.Inner1 in = new Outer().new Inner1();
- in.showInner1();
- //内部类被static所修饰,就相当于一个外部类(注意:静态内部类只能访问外部类的静态成员)
- Outer.Inner2 in1 = new Outer.Inner2();
- in1.showInner2();
-
- //静态内部类的成员也被static修饰,不需要创建内部类对象,直接(类名.方法名)
- Outer.Inner2.innerStaticMethod();
- //注意:非静态内部类中无法定义静态成员。
- }
- }
- class Outer{
- private static int num = 5;
- //内部类相当于一个成员
- class Inner1{
- int num = 6;
- public void showInner1(){
- int num = 7;
- System.out.println(num);//打印的是7
- System.out.println(this.num);//打印的是6
- System.out.println(Outer.this.num);//打印的是5
- }
- }
- //静态内部类
- static class Inner2{
- public void showInner2(){
- System.out.println("Inner2:"+num);
- }
- public static void innerStaticMethod(){
- System.out.println("innerStaticMethod run!");
- }
- }
- }
复制代码
|
|