////成员内部类:
//注:在静态内部类中可以定义静态的成员,而在非静态的内部类中不允许定义静态成员。
//1、创建成员(静态)内部类中对象:Outer.Inner oi =new Outer.Inner();
public class Demo04 {
public static void main(String[] args) {
Outer.Inner oi =new Outer.Inner(); //没有创建外部类
oi.show();
}
public static void sop(Object obj){
System.out.println(obj);
}
}
class Outer{
private static int num = 4;
//在外部类的成员方法中访问内部类
public void test(){
Inner inner = new Inner();
inner.show();
}
//定义成员内部类
static class Inner{
void show(){
//在成员内部类的方法中访问外部类的成员变量
System.out.println("num=="+num);
}
}
}
//2、创建成员(非静态)内部类中的的内部类对象: Outer.Inner oi =new Outer().new Inner();
public class Demo04 {
public static void main(String[] args) {
Outer.Inner oi =new Outer().new Inner();//通过外部类的对象去创建内部类。
oi.show();
}
public static void sop(Object obj){
System.out.println(obj);
}
}
class Outer{
private int num = 4;
public void test(){
Inner inner = new Inner();
inner.show();
}
class Inner{
void show(){
System.out.println("num=="+num);
}
}
}
//方法中的内部类
public class Demo04 {
public static void main(String[] args) {
Outer out = new Outer();
out.test();
}
public static void sop(Object obj){
System.out.println(obj);
}
}
class Outer{
private int num = 4;
public void test(){
class Inner{
void show(){
System.out.println("num="+num);
}
}
//方法内部类,只能在该方法中创建该类的实例对象,并调用show()方法;
//而且方法内部类也可以访问外部类的成员变量
Inner in = new Inner();
in.show();
}
}