0
点赞
收藏
分享

微信扫一扫

Java基础 -- 内部类

新鲜小饼干 2022-01-08 阅读 75

内部类的定义:

一个类的内部又嵌套了另一个类结构。被嵌套的类就叫内部类,嵌套其他类的类称为外部类(outer class),内部类最大的特点就是可以直接访问私有属性,并且可以体现类与类之间的包含关系。

class Outer { //外部类
    private int n1 = 100;//属性

    public Outer(int n1) {//构造器
        this.n1 = n1;
    }
    public void say(){
        //方法
    }
    {
        //代码块
    }
    class Inner{
        //内部类
    }
}
class Other {
    //外部其他类
}

类的五大成员:成员、方法、构造器、代码块、内部类

内部类的分类:

  1. 定义在外部类的局部位置上分为 局部内部类匿名内部类
  2. 定义在外部类的成员位置上分为 成员内部类静态内部类

局部内部类:

public class LocalInnerClass {//外部其他类
    //7.外部其他类不能访问局部内部类(因为局部内部类的地位就是一个局部变量)
    public static void main(String[] args) {
        Outer02 outer02 = new Outer02();
        outer02.m1();
    }
}
class Outer02 {
    private int n1 = 10;
    private int n2 = 800;
    private void m2() {
        System.out.println("m2()被调用...");
    }
    public void m1(){
        //1.定义在外部类的局部位置上,比如方法中,并且有类名
        //3.不能添加访问修饰符,但可以用final修饰
        //4.作用域:仅仅再定义它的方法或代码块中
        final class Inner02 {//局部内部类(本质还是一个类)
            private int n2 = 4657;
            public void f1(){
                //2.可以直接访问外部类的所有成员,包含私有的
                //5.内部类访问外部类成员的方式 ==> 直接访问
                System.out.println("n1=" + n1);
                m2();
                //8.如果外部类和局部内部类的成员重名时,默认遵守就近原则
                //  如果要访问外部类的成员,则可以使用 外部类名.this.成员名 去访问
                //  解读:Outer02.this 本质就是外部类的对象,即哪个对象调用m1,Outer02.this就是哪个对象
                System.out.println("就近原则的n2=" + n2);
                System.out.println("访问外部类的n2=" + Outer02.this.n2);
            }
        }
        //6.外部类在内部类的作用域内,可以创建内部类对象,然后就可以调用内部类的成员
        Inner02 inner02 = new Inner02();
        inner02.f1();
    }
}
举报

相关推荐

0 条评论