java类组成,非静态成员内部类的实例化【外部类.内部类 a = 外部类实例.new 内部类()】

本文详细介绍了Java中的内部类,包括成员内部类、局部内部类、静态成员内部类和匿名内部类的定义、使用及特点。通过实例展示了它们在方法中创建和调用的方法,以及对外部类和局部变量的访问规则。同时,文章还探讨了内部类在代码复用和简化设计中的作用。
摘要由CSDN通过智能技术生成
package com.msb.democlass;

/**
 1.类的组成:属性、方法、构造器、代码块(普通块、静态块、构造块、同步块)、内部类(成员内部类、局部内部类)
 2.内部类
 (1)成员内部类:静态、非静态
 (2)局部内部类
        位置:方法内、块内、构造器内
 */
public class DemoClass {
    //1.属性
    int age = 20;


    //2.方法
    public void a(){
        System.out.println("这是方法a");
        {
            System.out.println("这是一个普通块");    //6.普通构造块
        }
        //7.局部内部类
        class A{
            int age = 30;
            public void method(){
                System.out.println("局部内部类——成员方法"+age);
                System.out.println("局部内部类——成员方法"+this.age);
                System.out.println("外部类——成员方法"+DemoClass.this.age);
            }
        }
        //局部内部类,方法调用
        A a = new A();
        a.method();
    }
    //3.构造器:第三优先执行
    public DemoClass() {
    }

    public DemoClass(int age) {
        this.age = age;

    }

    //5.构造块:第二优先执行
    {
        System.out.println("这是一个构造块");
    }
    //4.静态构造块:最先执行
    static{
        System.out.println("这是一个静态构造块");
    }

    //1.1成员内部类
    class B{
        int age = 30;
        public void method(){
            System.out.println("成员内部类——成员方法"+age);
            System.out.println("成员内部类——成员方法"+this.age);
            System.out.println("外部部类——成员方法"+DemoClass.this.age);
        }
    }
    //1.2静态成员内部类
    static class C{
        int age = 30;
        public void method(){
            System.out.println("静态成员内部类——成员方法"+age);
            System.out.println("静态成员内部类——成员方法"+this.age);
//            System.out.println("外部部类——成员方法"+DemoClass.this.age);
        }
    }
    
    //2.1局部内部类:访问到的成员变量,必须被final修饰
    public void method(){
         final int num = 10;//final可以省略不写,但是当局部内部类中有方法访问外部方法中的局部变量时,局部变量默认是final类型的,不可再被修改
        class A{
            //num = 20;
            public void a(){
                //num = 20;
            }
        }
    }
    
    //2.2 如果某个类在项目中只使用一次,可以是内部类
    public Comparable method2(){
        class B implements Comparable{
            @Override
            public int compareTo(Object o) {
                return 100;
            }
        }
        return new B();
    }
    
    //3.匿名内部类
    public Comparable method3(){
        return new Comparable(){
            @Override
            public int compareTo(Object o) {
                return 100;
            }
        };
    }

    //局部内部类
    public void method4(){
        Comparable com =  new Comparable(){
            @Override
            public int compareTo(Object o) {
                return 100;
            }
        };
        System.out.println(com.compareTo("abc"));
    }
}
class Test{
    public static void main(String[] args) {
        DemoClass d = new DemoClass();
        d.a();//通过成员方法,局部内部类方法
        //创建静态成员内部类
        DemoClass.C c = new DemoClass.C();
        c.method();
        //创建非静态成员内部类对象
        DemoClass.B b = d.new B();
        b.method();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值