内部类与外部类之间访问总结
来源:互联网 发布:ep软件 编辑:程序博客网 时间:2024/05/16 11:02
1、内部类可以访问外部类的任何成员(直接写属性名或者方法名即可访问,实际上是通过外部类名+“.”+this+“.”+名称访问,如果是this+“.”+名称,此时访问不到外部类成员,访问的为内部类的成员)。
2、非静态内部类是不能含有静态成员的。
3、外部类中的方法访问内部类中的方法一共分为六种情况
1) 静态外部方法访问静态内部类静态方法,直接使用静态内部类名+ . +静态方法名。
2) 静态外部方法访问静态内部类非静态方法,需要创建静态内部类的实例再调用非静态方法。
3) 静态外部方法访问非静态内部类非静态方法,需要先创建外部类实例,再创建非静态内部类的实例最后调用非静态方法。
4) 非静态外部方法访问静态内部类静态方法,直接使用静态内部类名+ . +静态方法名。
5) 非静态外部方法访问静态内部类非静态方法,需要创建静态内部类的实例再调用非静态方法。
6) 非静态外部方法访问非静态内部类非静态方法,需要创建非静态内部类的实例再调用非静态方法。
测试代码如下(其中静态外部方法使用main方法方便测试输出):
public class innerClasstest {public static void main(String[] args) {staticInnerClass.staticInnerClassStaticmethod(); //静态外部方法访问静态内部类静态方法new staticInnerClass().staticInnerClassmethod(); //静态外部方法访问静态内部类非静态方法new innerClasstest().new innerClass().innerClassmethod(); //静态外部方法访问非静态内部类非静态方法System.out.println("---------------");new innerClasstest().outerMethod();}public void outerMethod() {staticInnerClass.staticInnerClassStaticmethod(); //非静态外部方法访问静态内部类静态方法new staticInnerClass().staticInnerClassmethod(); //非静态外部方法访问静态内部类非静态方法new innerClass().innerClassmethod(); //非静态外部方法访问非静态内部类非静态方法} static class staticInnerClass{public static void staticInnerClassStaticmethod() {System.out.println("this is staticInnerClassStaticmethod");}public void staticInnerClassmethod() {System.out.println("this is staticInnerClassmethod");}} class innerClass{public void innerClassmethod() {System.out.println("this is innerClassmethod");}}}
代码输出结果为:
补充:
一、在外部类外部使用内部类(不推荐这么做)
1) 访问静态内部类静态方法,直接使用静态外部类名+ . +静态内部类名+ . +静态方法名。
2) 访问静态内部类非静态方法,需要创建静态内部类的实例再调用非静态方法(并且需要import内部类)。
3) 访问非静态内部类非静态方法,需要先创建外部类实例,再创建非静态内部类的实例最后调用非静态方法。
import innertest.innerClasstest.staticInnerClass;public class outerTest {public static void main(String[] args) {innerClasstest.staticInnerClass.staticInnerClassStaticmethod();//访问静态内部类静态方法new staticInnerClass().staticInnerClassmethod();//访问静态内部类非静态方法new innerClasstest().new innerClass().innerClassmethod();//访问非静态内部类非静态方法} }
二、内部类访问外部类若出现同名方法或者属性时如何区分
1) this+.+方法或属性名称访问的内部类的方法或属性,不加this默认访问内部类方法或者属性。
2) 外部类名+.+this+.+ 方法或属性名称访问的外部部类的方法或属性。
3) 由此可知在内部类方法中想要返回内部类的引用时可return this,当想要返回外部类的引用可return 外部类名+.+this。
- 内部类与外部类之间访问总结
- 内部类和外部类之间互相访问
- 内部类和外部类之间互相访问
- 黑马程序员_总结外部类访问内部类
- 静态内部类,成员内部类,外部类之间的一些知识总结
- 黑马程序员_内部类与外部类访问说明
- App8_14_内部类与外部类的访问规则
- 内部类与外部类
- 内部类与外部类
- 内部类与外部类
- 内部类与外部类
- 外部类、内部类、匿名内部类之间关系模型
- 内部类外部类之间的互访
- Java 内部类访问外部类
- 内部类访问外部类的实例
- C++ 实现内部类访问外部类
- 内部类访问外部类成员
- C++ 实现内部类访问外部类
- 一个薅羊毛解决的框架,因为内存占用太大,没实验。。
- vue+webpack项目创建过程
- 使用碰撞指针解决LeetCode问题:SortColor75,TwoSumII167,ReverseString344,reverseVowels345
- 排列组合
- Python编程:从入门到实践(课后习题8)
- 内部类与外部类之间访问总结
- 测试模型之W模型
- 【错误】关于DateTable中 Cannot reinitialise DataTable问题
- 设计模式学习-简单工厂模式
- 编译
- python Tkinter学习
- SGISTL源码探究-关联式容器:hash_multimap
- elasticsearch 5.1 java开发用例
- xcode8 如何安装插件