package innerClass01;
/**
* @author QinYingjie
* @version 1.0
*/
public class InnerClass01 {
public static void main(String[] args) {
}
}
//内部类
//基本介绍:一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类,嵌套的其他类称为外部类。
//内部类使我们类的五大成员【属性,方法,构造器,代码块,内部类】,内部类最大的特点就是直接可以访问私有属性
//并且可以提现类与类之间的关系
/**
* class Outer{//外部类
* class Inner{//内部类
*
* }
* }
* class Other //其他类
*/
class Outer{
private int n1 = 100;//属性
public Outer(int n1)//构造器
{
this.n1 = n1;//
}
public void m1()//方法
{
System.out.println("m1()...");
}
{
//代码块
System.out.println("代码块...");
}
class Inner{//内部类,在Outer类的内部
}
}
//内部类分类:4种
//定义在外部类局部位置上(比如方法内)
/**
* 1.局部内部类(有类名)
* 2.匿名内部类(无类名)重点
*/
//定义在外部类的成员位置上
/**
* 1.成员内部类(没用static)
* 2.静态内部类(使用static)
*/
//局部内部类
class Outer01{
private int n1 = 100;
private void m1()
{
final class Inner01{
private int n1 =10;
// 局部内部类的使用细节
// 1.局部内部类是定义在外部类的局部位置,通常在方法中
// 2.局部内部类可以直接访问外部类的所有成员(私有、公有)
// 3.局部内部类在定义时不能添加访问修饰符,但是可使用final修饰
// 4.作用域:仅仅在定义它的方法或代码块中
// 5.外部其他类不能访问局部内部类(局部内部类相当于一个局部变量)
// 6.如果外部类和局部内部类的成员重名时,默认遵守就近原则,如果想访问外部类的成员,则可以使用
// (外部类名.this.成员)去访问
public void f1()
{
System.out.println("n1="+n1);
// 解读:Outer01.this本质就是外部类对象,即哪个对象调用了m1,Outer01.this就是哪个对象
System.out.println("外部类的n1="+Outer01.this.n1);
m2();
}
}
}
private void m2()
{
System.out.println("Outer01的成员方法");
}
}