- Java类
- Java包
- Java方法
- Java访问
- Java创建
- Java对象(Object)
- Java内部类
- Java继承
- Java抽象类
- Java泛型类
- Java异常
- Java接口
- Java枚举
- Java注解
Java内部类成员
内部类可以访问其所有实例成员,实例字段和其封闭类的实例方法。
参考如下实例 -
class Outer { private int value = 2017; public class Inner { public void printValue() { System.out.println("Inner: Value = " + value); } } // Inner class ends here public void printValue() { System.out.println("Outer: Value = " + value); } public void setValue(int newValue) { this.value = newValue; } } public class Main { public static void main(String[] args) { Outer out = new Outer(); Outer.Inner in = out.new Inner(); out.printValue(); in.printValue(); out.setValue(2018); out.printValue(); in.printValue(); } }
上面的代码生成以下结果。
Outer: Value = 2017 Inner: Value = 2017 Outer: Value = 2018 Inner: Value = 2018
示例-1
以下代码显示如何访问内部类的内部变量。
public class Main { public static void main(String[] args) { Outer out = new Outer(); Outer.Inner in = out.new Inner(); out.printValue(); in.printValue(); out.setValue(3); out.printValue(); in.printValue(); } } class Outer { private int value = 1; public class Inner { private int value = 2; public void printValue() { System.out.println("Inner: Value = " + value); } } // Inner class ends here public void printValue() { System.out.println("Outer: Value = " + value); } public void setValue(int newValue) { this.value = newValue; } }
上面的代码生成以下结果。
Outer: Value = 1 Inner: Value = 2 Outer: Value = 3 Inner: Value = 2
Inner类中的this关键字
以下代码显示如何在内部类中使用关键字 - this
。
class Outer { private int value = 1; class QualifiedThis { private int value = 2; public void printValue() { System.out.println("value=" + value); System.out.println("this.value=" + this.value); System.out.println("QualifiedThis.this.value=" + QualifiedThis.this.value); } public void printHiddenValue() { int value = 2; System.out.println("value=" + value); System.out.println("this.value=" + this.value); System.out.println("QualifiedThis.this.value=" + QualifiedThis.this.value); } } public void printValue() { System.out.println("value=" + value); System.out.println("this.value=" + this.value); } } public class Main { public static void main(String[] args) { Outer outer = new Outer(); Outer.QualifiedThis qt = outer.new QualifiedThis(); System.out.println("printValue():"); qt.printValue(); System.out.println("printHiddenValue():"); qt.printHiddenValue(); outer.printValue(); } }
上面的代码生成以下结果。
printValue(): value=2 this.value=2 QualifiedThis.this.value=2 printHiddenValue(): value=2 this.value=2 QualifiedThis.this.value=2 value=1 this.value=1
隐藏变量
如果实例变量名称被隐藏,必须使用关键字this
或类名称以及关键字this
限定其名称。
class TopLevelOuter { private int v1 = 100; // Here, only v1 is in scope public class InnerLevelOne { private int v2 = 200; // Here, only v1 and v2 are in scope public class InnerLevelTwo { private int v3 = 300; // Here, only v1, v2, and v3 are in scope public class InnerLevelThree { private int v4 = 400; // Here, all v1, v2, v3, and v4 are in scope } } } }
从外部类
以下代码显示如何从外部类引用变量。
public class Test{ private int value = 1; public class Inner { private int value = 2; public void printValue() { System.out.println("Inner: Value = " + value); System.out.println("Outer: Value = " + Test.this.value); } } // Inner class ends here public void printValue() { System.out.println("\nOuter - printValue()..."); System.out.println("Outer: Value = " + value); } public void setValue(int newValue) { System.out.println("\nSetting Outer's value to " + newValue); this.value = newValue; } }
分类导航
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
关注微信小程序
扫描二维码
程序员编程王