内部类与外部类属性互相获取
在实习的过程中,项目中使用的数据增删改查的方式是使用TkMybatis框架的,其中就涉及到构造Example的代码,里面还有两个静态内部类Criteria和OrderBy。早查看Example源码的时候对里面的内部类中的属性初始化有点疑惑,故写此篇博客记录一下。
我定义了下面的外部类和其中的内部类:
package com.achao;
public class OuterClass {
// 外部类的属性
public String outerName;
public int outerAge;
// 内部类属性
public OuterClass.insideClass insideClass;
public OuterClass() {
}
public OuterClass(String outerName, int outerAge) {
this.outerName = outerName;
this.outerAge = outerAge;
}
public void outerMethod(){
System.out.println("这是外部类的方法");
// 获取自己的属性
System.out.println("this.outerName:" + this.outerName);
System.out.println("this.outerAge:" + this.outerAge);
}
// 内部类
public class insideClass{
public String insideName;
public int insideAge;
// 构造方法中初始化了外部类的内部类属性
public insideClass() {
OuterClass.this.insideClass = this;
}
public insideClass(String insideName, int insideAge) {
this.insideName = insideName;
this.insideAge = insideAge;
OuterClass.this.insideClass = this;
}
public void insideMethod(){
System.out.println("这是普通内部类的方法");
System.out.println("正在获取普通内部类的属性");
System.out.println("this.insideName:" + this.insideName );
System.out.println("this.insideAge:" + this.insideAge);
System.out.println("************************");
// 获得此内部类所在外部类对象的属性
System.out.println("正在获取外部类属性");
System.out.println("OuterClass.this.outerName:" + OuterClass.this.outerName);
System.out.println("OuterClass.this.outerAge:" + OuterClass.this.outerAge);
}
}
}
之后我们尝试从外部类中获取内部类的属性
public class Client {
public static void main(String[] args) {
// 创建一个外部类对象
OuterClass outerClass = new OuterClass("lichenchao",18);
// 创建这个内部类的对象
OuterClass.insideClass insideClass = outerClass. new insideClass();// 创建一个外部类对象的内部类声明过程
// 设置内部类属性
outerClass.insideClass.insideName = "achao";
outerClass.insideClass.insideAge = 22;
// 获得这个外部类对象内部类的属性
outerClass.insideClass.insideMethod();
}
}