内部类也相当于类中的成员,一般是私有的,当外部类对象拥有一个对象成员,且这个对象成员仅属于这个外部类,不会被其他类使用时,定义为内部类。例如Person有Heart,Heart仅被Person使用,就可以定义为内部类,且为私有不会被其他类使用。
Java中的内部类创建对象方法:外部类.内部类 引用 = 外部类对象.内部类对象
Inter是Outer的内部类,那么直接创建内部类对象Outer.Inner inner = new Outer().Inner();
先创建外部类对象,再用外部类对象创建内部类对象
Outer outer = new Outer();
Inner inner = outer.new Inner();
外部类如何访问内部类成员?
1.如果内部类是static修饰的,直接用内部类调用非私有的属性和方法
2.如果内部类不是static修饰的,在外部类中要创建内部类对象,才可用对象调用内部类成员
public class Outer {
class Inner {
// 定义一个变量10
int num = 10;
// 显示该变量的方法
public void showNum() {
System.out.println(num);
}
}
public void showInner() {
// 创建内部类对象
Inner in = new Inner();
// 显示内部类的属性
System.out.println(in.num);
// 调用内部类的方法
in.showNum();
}
}
内部类如何访问外部类成员?
1.外部类成员与内部类成员不重名时,内部类中直接用外部类的成员
public class Outer2 {
// 定义一个变量10
int num = 10;
class Inner {
// 显示外部类的属性
public void show() {
System.out.println(num);
}
}
}
2.外部类成员与内部类成员重名时,内部类访问内部类成员用this.获取,内部类访问外部类成员用外部类.this.获取
public class Outer3 {
// 定义外部类变量
int num = 10;
class Inner {
// 定义内部类变量
int num = 20;
public void show() {
// 定义局部变量
int num = 30;
// 输出局部变量
System.out.println(num);
// 输出内部类变量
System.out.println(this.num);
// 输出外部类变量
System.out.println(Outer3.this.num);
}
}
}
如何继承内部类?
子类继承内部类,当创建子类对象时,构造方法自动调用内部类的构造方法,内部类相当于外部类中的成员,所以要在其他类中使用内部类,必须要先有外部类对象,正常情况下调用父类的构造方法是super(),此处调用内部类的构造方法与super()类似,即Outer.super(),表明是Outer类中的父类。
public class InnerTest extends Out.Inner{
//内部类初始化之前,外部类必须初始化
public InnerTest(Out out) {
//调用Out类中的父类的构造方法
out.super();
System.out.println("继承公有内部类");
}
public static void main(String[] args) {
Out out = new Out();
InnerTest it = new InnerTest(out);
}
}
网友评论