package day6$6;
public class Inside {
public static void main(String[] args) {
//先创建一个外部类对象
Outside in=new Outside();
//在通过外部类对象创建一个内部类对象
Outside.Indoor oi = in.new Indoor();
//调用内部类自己的属性和方法
oi.Swim();
System.out.println(oi.oo);
//外部类自己调用外部类
in.age=8;
System.out.println(in.age);
System.out.println("=============================================");
//静态内部类
//静态内部类的创建需要依赖外部类
Out.Ind j=new Out.Ind();
//静态内部类不可以调用外部类的属性和方法
//静态内部类调用自己的属性和方法
j.pp="ajk";
j.Swim();
//在静态内部类中,只能使用外部类名直接调用外部的静态属性和方法
Out.age=3;
}
}
//外部类
class Outside {
String name = "张";
static int age = 29;
public void run() {
System.out.println("我在狂奔");
// 内部类
}
class Indoor {
String oo = "aljk";
public void Swim() {
System.out.println("我在游泳");
run();
}
}
}
//外部类
class Out {
String name = "张了";
static int age = 2;
public static void run() {
System.out.println("我在夕阳狂奔");
}
// 静态内部类
static class Ind {
String pp= "appk";
int age=5;
public void Swim() {
System.out.println("我在水库游泳");
//直接使用自己类中的age
System.out.println(age);
//调用外部类中的age
System.out.println(Out.age);
//外部类的方法直接调用
run();
}
}
}