package com.lbj.javase20;
/**
* 关于成员内部类:
*
* 1.成员内部类可以等同看做成员变量
*
* 内部类重要的作用:可以直接访问外部类中私有的数据
*
* 2.成员内部类中不能有静态声明和静态变量、静态方法。
*
* 3.成员内部类可以访问外部类的所有数据
*
*
*
* @author 14811
*
*/
public class Test02 {
//静态变量
private static String s1="A";
//静态方法
private static void m1(){
System.out.println("static m1 method");
}
//成员变量
private String s2="B";
//成员方法
private void m2(){
System.out.println("m2 method");
}
//成员内部类
//可以用访问控制权限的修饰符修饰
//public/protected/private/缺省
class InnerClass{
//静态方法调用本类中的静态方法和静态变量【成员内部类无法访问静态方法和静态类】
// public static void m3(){
// System.out.println(s1);
// m1();
//
System.out.println(s2);
m2();静态类中无法访问成员方法和成员变量
// }
//成员方法
public void m4(){
System.out.println(s1);
m1();
// System.out.println(s2);
// m2();
}
}
//入口哦
public static void main(String[] args){
//执行m3
// OuterClass.InnerClass.m3();//访问静态内部类中的静态方法
//创建外部类对象
Test02 t=new Test02();
//这里是比较奇怪的
//静态内部类的调用是外部类名点.内部类名
//成员内部类的调用是外部类对象.new xxx();
InnerClass inner=t.new InnerClass();
//访问静态内部类只需要创建一次对象,访问成员内部类需要创建两次对象
inner.m4();
}
}