Java语言基础-类中有类之内部类

内部类概述

当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。

在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。

inner class 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。

有成员内部类与局部内部类之分。

public class InnerClassTest {
    public static void main(final String[] args) {
        // 实例化静态内部类
        Person.Eye eye = new Person.Eye();
        eye.blink();

        // 实例化内部类
        Person p = new Person();
        Person.Mind mind = p.new Mind();

        mind.speak();


        // 局部内部类
        // 下面两种局部内部类一般不会看见
        // 局部内部类一般是一个实现了某个接口的实现类,通过调用方法得到一个实现类对象
        // public Comparable getComparable(){
        //     class MyComparable implements Comparable{
                // @Override
                // public int comoareTo(Object o){
                //     return 0;
                // }
        //     }
        //     return new MyComparable();
        // }

        // 也可以匿名实现这样一个内部类
        // return new Comparable(){
        //     @Override
        //     public int comoareTo(Object o){
        //         return 0;
        //     }
        // }
        
    }
}


class Person{
    String name = "小明";
    /**
     * 内部类
     *      内部类可以作为外部类的成员,可以调用外部类的结构(静态内部类只能调用静态结构)
     *      可以被final修饰,表示此类不能被继承
     *      可以被abstract修饰
     *      可以使用四种权限修饰符
     */
    // 成员内部类
    class Mind{
        String name = "左脑";
        public void reflection(){
            System.out.println("思考");
        }

        public void speak(){
            String name = "语言中枢";

            System.out.println(name);               // 局部变量name
            System.out.println(this.name);          // 内部类属性name
            System.out.println(Person.this.name);   // 外部类属性name
        }
    }

    // 静态成员内部类
    static class Eye{
        
        public void blink(){
            System.out.println("眨眼睛");
        }
    }

	// 方法
    public void method(){
        // 局部内部类
        class AA{

        }
    }

    // 代码块
    {
        // 局部内部类
        class BB{

        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值