一、内部类的一些基础知识  

  主要是学习一下在内部类中怎么在内部类中使用外部类的属性和方法,和去使用this和new。

  当我们在创建一个内部类的时候,它无形中就与外部类产生了某种联系,依赖于这种联系,它可以无限制的访问,外部类的元素

package com.study.inner;

public class OuterClass {
    
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    
    public class InnerClass{
        
        public InnerClass(){
            name="张三";
            age=22;
        }
        
        public void display(){
            System.out.println("name="+getName()+";age="+getAge());
        }
    }
    
    public static void main(String[] args) {
        
        OuterClass out=new OuterClass();
        
        OuterClass.InnerClass in=out.new InnerClass();
        
        in.display();
    }
    

}
输出结果:name=张三;age=22

在上面的demo中我们可以看到内部类InnerClass可以对外部类OuterClass的属性进行无缝的访问,尽管外部类的属性是用private进行修饰的。这是因为当我们在创建某个外部类的内部类对象时,此时内部对象必定会捕获一个指向那个外围类对象的引用,只要我们在访问外围类的成员时,就会用这个引用来选择外部类的成员。

在上面的demo中我们可以看到如何使用外部类来引用内部类:引用内部类 我们需要指明这个对象的类型

  OuterClasName.InnerClassName。这个时候我们需要创建某个内部类对象,必须利用  外部类对象通过.new 来创建内部类。 OuterClass.InnerClass innerClass = outerClass.new InnerClass();

同时我们需要生成对外部类对象的引用,可以使用OuterClassName.this,这样就能引用了。