动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

Java内部类和外部类的相互访问

05-18 16:22 1310浏览
举报 T字号
  • 大字
  • 中字
  • 小字

1.内部类访问外部类

里面的可以自由访问外面的,访问非静态成员变量时必须先创建对象。
以下从内部类的状态开始阐述。

1)非静态内部类的非静态方法
直接访问

public class Outter {
    int i = 5;
    static String word = "Hello";

    class Inner {
        void Test() {
            System.out.println(i);
            System.out.println(word);
        }
    }
}

2)非静态内部类的静态方法
非静态内部类不能有静态方法,编译报错。

3)静态内部类的非静态方法
访问非静态成员变量必须先new外部类。

public class Outter {
    int i = 5;
    static String word = "Hello";

    static class Inner {
        void Test() {
            System.out.println(new Outter().i);
            System.out.println(word);
        }
    }
}

4)静态内部类的静态方法
和第三种情况类似,静态方法访问外部类非静态成员变量必须先new外部类。

public class Outter {
    int i = 5;
    static String word = "Hello";

    static class Inner {
        static void Test() {
            System.out.println(new Outter().i);
            System.out.println(word);
        }
    }
}

2.外部类访问内部类

可以将内部类理解为外部类的一个普通成员,所以外面的访问里面的需先new一个对象。
Outter.Inner inner = new Outter.Inner();

1)非静态方法访问非静态内部类成员
先new内部类

public class Outter {
    void Test() {
        System.out.println(new Inner().i);
    }
    class Inner {
        int i = 5;
//      static String word = "hello";  编译报错!
    }
}

2)非静态方法访问静态内部类的成员
先new内部类,再访问非静态的成员变量
静态成员变量可外部类.内部类.变量名直接访问

public class Outter {
    void Test() {
        Outter.Inner inner = new Outter.Inner();
        System.out.println(inner.i);
        System.out.println(inner.string);
        System.out.println(Outter.Inner.string);
    }
    static class Inner {
        int i = 5;
        static String string = "Hello";
    }
}

3)静态方法访问非静态内部类的成员

public class Outter {
    static void Test() {
        System.out.println(new Outter().new Inner().i);
    }
    class Inner {
        int i = 5;
//	static String word = "Hello";  编译报错!
    }
}

4)静态方法访问静态内部类的成员
访问非静态成员需先new 内部类
new Inner().i
与第2种情况相似

public class Outter {
    static void Test() {
        Outter.Inner inner = new Outter.Inner();
        System.out.println(new Inner().i);
        System.out.println(inner.i);
        System.out.println(Outter.Inner.word);
    }
    static class Inner {
        int i = 5;
        static String word = "Hello";
    }
}

5)匿名内部类
匿名内部类访问外部成员变量时,成员变量前应加final关键字

 以上就是动力节点在线的视频课程中介绍的Java内部类和Java外部类的相互访问的几种方式,各自的访问方式有所不同,也有相同之处,想深入学习的小伙伴可以继续观看动力节点在线的免费视频课程。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵316
程序员代码小兵316

16篇文章贡献58453字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Mybatis返回值类型

代码小兵87207-15 12:10

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

深入理解JVM虚拟机

杨晶珍05-12 17:30

发评论

举报

0/150

取消