内部类详解

内部类

1.成员内部类

public class MyouterClass {
    //定义外部类属性
    String outClass;
    //成员内部类
    class MyinterClass{
        //定义内部类属性
        String inClass;
        //定义内部类方法
        public void inMain(){
            System.out.println("这是一个成员内部类的方法。。");
        }
    }
    public void outMain(){
        System.out.println("这是一个外部类的方法。。");
    }
    /*//****在外部类调用成员内部类的方法
    public void testOut(){
        MyinterClass myinterClass = new MyinterClass();
        myinterClass.inMain();
    }*/

}

public class Test01 {
    public static void main(String[] args) {
     //调用MyouterClass对象
     MyouterClass out = new MyouterClass();
     //创建成员内部类的对象
     MyouterClass.MyinterClass in = out.new MyinterClass();
        in.inMain();
        out.outMain();

        /*//****创建外部类的对象
        MyouterClass out = new MyouterClass();
        out.testOut();*/
    }
}

成员内部类调用方法

调用成员内部类 必须用–外部类对象名.new

​ 外部类 对象名1 = new 外部类();

​ 外部类.成员内部类 对象名2 = 对象名1.new 成员内部类();

​ 对象名2.方法名();

2.静态内部类

public class MyouterClass {
    //定义外部类属性
    String outClass;
    //定义静态内部类
    static class MyinterClass{
        //定义静态内部类中的属性
        String inClass;
        //定义静态内部类中的属性
        public void inMain(){
            System.out.println("这是一个静态内部类中的方法");
        }
    }
    //定义外部类方法
    public void outMain(){
        System.out.println("这是一个外部类中的方法");
    }


}
public class Test02 {
    public static void main(String[] args) {
        //调用静态内部类的对象
        MyouterClass.MyinterClass in = new MyouterClass.MyinterClass();
        //输出静态内部类的方法
        in.inMain();
        //调用外部类的对象
        MyouterClass out = new MyouterClass();
        //输出外部类的方法
        out.outMain();

    }
}
静态内部类调用方法

​ 外部类.静态内部类 对象名 = new 外部类.静态内部类();

​ 对象名.方法名();

3.局部内部类

public class MyouterClass {
    //定义外部类的属性
    String outClass;
    //定义外部类的方法
    public void outMain(){
        class MyinterClass{
            //定义局部内部类的属性
            String inClass;
            //定义局部内部类的方法
            public void inMain(){
                System.out.println("这是一个局部内部类的方法");
            }
        }
        //定义局部内部类的对象
        MyinterClass in = new MyinterClass();
        in.inMain();
        System.out.println("这是一个外部类方法");
    }
}
public class Test03 {
    public static void main(String[] args) {
     MyouterClass out = new MyouterClass();
     out.outMain();
    }
}
局部内部类调用方法

​ 外部类 对象名 = new 外部类();

​ 对象名.方法名();

4.匿名内部类

interface MyinterClass{
    void m1();
}

public class MyouterClass{
    //定义外部类的属性
    String outClass;
    //定义外部类的方法
    public void outMain(){
        //定义匿名内部类的对象
        MyinterClass in;
        in = new MyinterClass() {
            //定义匿名内部类
            @Override
            public void m1() {
                System.out.println("这是一个匿名内部类的方法");
            }
        };
        in.m1();
    }
}
public class Test04 {
    public static void main(String[] args) {
     MyouterClass out = new MyouterClass();
     out.outMain();
    }
}
匿名内部类调用方法

先在外部类定义一个接口在

​ 外部类 对象名 = new 外部类();

​ 对象名.方法名();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值