java内部类

java中还有一种内部类技术,简单的说就是在一个类的内部定义一个类。内部类看起来简单,但是当你深入其中,你会发现他极其复杂。事实上,java应用开发过程中内部类使用的地方不是很多,一般在图形用户界面开发中用于事件处理。
内部类技术虽然使得程序结构变得紧凑,但是在一定程度上破坏了java面向对象的思想。

内部类概述

java语言中允许在一个类(或方法、代码块)的内部定义另一个类,后者称为“内部类”,也称为“嵌套类”,封装它的类称为“外部类”,内部类与外部类之间存在逻辑上的隶属关系,内部类一般只用在封装它的外部类或代码块中使用。

内部类的作用

1.封装。将不想公开的实现细节封装到一个内部类中,内部类可以声明为私有的,只能在外部类中访问。
2.提供命名空间。静态内部类和外部类能够提供有别于包的命名空间。
3.便于访问外部类成员。内部类能够很方便的访问外部类的成员,包括私有成员也能访问。

内部类的分类

内部类—》有名内部类和匿名内部类
有名内部类—》按照作用域分为:局部内部类和成员内部类
成员内部类–》可以分为实列内部类和静态内部类

  • 成员内部类
    成员内部类类似于外部类的成员变量,在外边类的内部,且方法体和代码块之外的地方定义内部类。
  • 实列内部类
    实列内部类与实列变量类似,可以声明为公有级别、私有级别、默认级别、受保护级别。而外部内只能声明为公有或默认级别。
package 内部类;

//内部类按照是否有名字可以分为
//1.有名内部类
//2.匿名内部类
//有名内部类按照作用域不同又可以分为
//1.局部内部类
//2.成员内部类
//成员内部类又可以分为
//1.实列内部类
//2.静态内部类

//演示实列内部类
//这是外部类
public class MyLei {
    //外部类成员变量
    private int x = 10;
    //外部类方法
    public void print(){
        System.out.println("调用外部方法");
    }
    //测试内部类
    public void test(){
        Inner inner = new Inner();
        inner.display();
    }

    //定义内部类
    class Inner{
        //内部类成员变量
        private int x = 5;
        //内部类方法
        void display(){
            //访问外部类成员变量
            System.out.println("外部成员变量"+MyLei.this.x);
            //访问内部类成员变量
            System.out.println("内部类成员变量"+this.x);

            //调用外部内的成员方法
            MyLei.this.print();
            print();
        }
    }

    public static void main(String[] args) {
        MyLei myLei = new MyLei();
        myLei.test();
    }
}

  • 静态内部类
    静态内部类与静态变量类似,在声明的时候使用static关键字修饰,静态内部类之恶能访问外部内中静态成员,所以静态内部类使用的场景不多,但可以提供有别于包的命名空间。
  • 局部内部类
    局部内部类就是定义在方法体或者代码块的内部,局部内部类的作用月只在当前方法体或者代码块中。局部内部类访问级别只能是默认的,即不能使用public、private、protected修饰。局部内部类也不能是静态,即不能使用static修饰,局部内部类也可以访问外部所有成员。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿成成毕设

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

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

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

打赏作者

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

抵扣说明:

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

余额充值