0
点赞
收藏
分享

微信扫一扫

Java面向对象编程4-内部类

爪哇驿站 2022-02-26 阅读 80

类的组成:属性、方法、构造器、代码块、内部类
代码块:分为 普通块、静态块、构造块、同步块
内部类:分为 成员内部类(静态的、非静态的) 和 局部内部类(所在位置:方法内、块内、构造器内)

内部类的定义:一个类TestOuter的内部的类SubTest,叫内部类,外部类:相对于内部类,TestOuter就是外部类

成员内部类
里面属性、方法、构造器等(不建议再套一层内部类,虽然也可以)
修饰符:private, default, protect, public, final, abstract

package msb.javase.oop.javase_220226_innerclass_test;

public class Test {
/*  类的组成:属性、方法、构造器、代码块、内部类
 *   代码块:分为 普通块、静态块、构造块、同步块
 *   内部类:分为 成员内部类 和 局部内部类,局部内部类所在位置:方法内、块内、构造器内
*/
    //属性
    private int a = 10;
    //方法
    public void b(){
        System.out.println("b");
        {
            //代码块(普通块)
            System.out.println("普通块");
        }
        class E{
            //内部类(局部内部类-方法内)
        }
    }
    //构造器
    public Test(){
        class E{
            //内部类(局部内部类-构造器内)
        }
        //System.out.println(name);
    }
    //代码块(构造块)
    {
        int b;
        class F{
            //内部类(局部内部类-块内)
        }
    }
    //代码块(静态块)
    static {
        int c;
    }
    //内部类(非静态成员内部类)
    class InnerClass{
        String name;
        int a = 20;
        public void method(){
            int a = 30;
            System.out.println(a);//在内部类中可以访问外部类的属性
            b();//在内部类中可以访问外部类的方法
            //内部类和外部类属性重名的时候,访问外部类属性的方式:OuterClass.this.name
            System.out.println(a);//结果为30
            System.out.println(this.a);//结果为20
            System.out.println(Test.this.a);//结果为10
        }
    }
    //内部类(静态成员内部类)
    static class StaticInnerClass{

    }
}
class Main{
    public static void main(String[] args) {
        //创建外部类对象
        Test t = new Test();
        t.b();
        //创建内部类对象
        //创建静态成员内部类
        Test.StaticInnerClass s = new Test.StaticInnerClass();
        //创建非静态成员内部类
        Test t2 = new Test(); //必须先创建外部类对象
        Test.InnerClass i = t2.new InnerClass(); //通过外部类对象进行创建
        i.method();
    }
}

局部内部类

TODO

举报

相关推荐

0 条评论