Java 成员内部类
目录
用 [TOC]
来生成目录:
成员内部类
成员内部类
成员内部类:
<1>外部类名.内部类名 对象名 = 外部类对象.内部类对象;
Outer.Inner oi = new Outer().new Inner();
<2>成员内部类被静态修饰后的访问方式是:
//格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();
Outer.Inner oi = new Outer.Inner();
成员内部类的代码块1
//访问内部类成员
class Outer {
private int num = 10;
class Inner {
public void show() {
System.out.println(num);
}
}
}
class InnerClassDemo3 {
public static void main(String[] args) {
//需求:我要访问Inner类的show()方法
//格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
Outer.Inner oi = new Outer().new Inner();
oi.show();
}
}
成员内部类(被静态修饰)的代码块2
//成员内部类(静态类型)
class Outer {
private int num = 10;
private static int num2 = 100;
//内部类用静态修饰是因为内部类可以看出是外部类的成员
public static class Inner {
public void show() {
//System.out.println(num);
System.out.println(num2);
}
public static void show2() {
//System.out.println(num);
System.out.println(num2);
}
}
}
class InnerClassDemo4 {
public static void main(String[] args) {
//使用内部类
// 限定的新静态类
//成员内部类被静态修饰后的访问方式是:
//格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();
// Outer.Inner oi = new Outer().new Inner();
Outer.Inner oi = new Outer.Inner();
// oi.show();
oi.show2();
//show2()的另一种调用方式
Outer.Inner.show2();
}
}
练习题
//访问内部类成员
class Outer{
public int num=10;
class Inner{
public int num=20;
public void show(){
int num=30;
System.out.println(num);
System.out.println(this.num);
System.out.println(new Outer().num); //通过对象去访问
System.out.println(Outer.this.num); //通过外部类限制this
}
}
}
public class InnerClassTest {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner(); //访问Inner类的show()方法
oi.show();
}
}