难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
提示
本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
1.外部类访问静态内部类中的实例变量
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义实例变量。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员:
要想都访问,除非提供对应的公开方法,这里只演示一次,下面的实例变量、实例方法、常量、最终方法、类变量、类方法、静态常量、静态最终方法都一样。
2.外部类访问静态内部类中的实例方法
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义实例方法。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员。
3.外部类访问静态内部类中的常量
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义常量。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员。
4.外部类访问静态内部类中的最终方法
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义最终方法。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员。
5.外部类访问静态内部类中的类变量
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义类变量。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员。
当然了静态成员可以直接使用类名调用。
6.外部类访问静态内部类中的类方法
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义类方法。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员。
当然了静态成员可以直接使用类名调用。
7.外部类访问静态内部类中的静态常量
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义静态常量。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员。
当然了静态成员可以直接使用类名调用。
8.外部类访问静态内部类中的静态最终方法
演示:
请创建一个外部类Outer,在外部类Outer里面创建一个静态内部类Inner。
在外部类Outer里面定义一个静态内部类Inner的对象。
在静态内部类Inner中定义静态最终方法。
试试在外部类构造方法中访问。
请观察程序运行结果。
代码:
Outer类:
Main类:
结果:
在本例中,外部类Outer里定义了静态内部类Inner的对象,通过这个对象来访问静态内部类里面的成员,访问权限分别为private,public,protected或package private的都可以访问。
但是,在外界如果创建外部类对象的话,外部类对象调用静态内部类对象只能访问静态内部类里面非私有的成员。
当然了静态成员可以直接使用类名调用。
总结
- 在Java中,我们可以在一个类中再定义一个类,这样称之为内部类。
- 内部类又称之为嵌套类。
- 内部类分为两类:静态和非静态。 声明为static的内部类称为静态内部类。 非静态内部类称为内部类。
- 要实例化内部类,必须首先实例化外部类。
- 内部类中的实例变量。可以通过外部类中内部类对象访问,外界内部类对象只能访问public修饰的。
- 内部类中的实例方法。可以通过外部类中内部类对象访问,外界内部类对象只能访问public修饰的。
- 内部类中的常量。可以通过外部类中内部类对象访问,外界内部类对象只能访问public修饰的。
- 内部类中的最终方法。可以通过外部类中内部类对象访问,外界内部类对象只能访问public修饰的。
- 内部类中的类变量。内部类不可以定义任何类变量。
- 内部类中的类方法。内部类不可以定义任何类方法。
- 内部类中的静态常量。可以通过外部类中内部类对象访问,外界内部类对象只能访问public修饰的。
- 内部类中的静态最终方法。内部类不可以定义任何静态最终方法。
至此,Java中外部类访问静态内部类成员相关内容讲解先告一段落,更多内容请持续关注。
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
下一章
“全栈2019”Java第七十二章:静态内部类访问外部类成员详解
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号Gorhaf,私信“Java学习小组”。
- 方式二:关注公众号Gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!