第16天 内部类

本文详细介绍了Java内部类的概念及作用,包括更好的封装性、直接访问外部类的私有数据等特性,并区分了非静态内部类与静态内部类的不同用法。

内部类的概念:
大多数时候,我们把类定义成一个独立的程序单元。在某些时候我们也把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被成为内部类(有的书上也叫作嵌套类)包含内部类的类被称为外部类,有时候也叫作宿主类。

了解了内部类的概念,那么内部类的作用是什么呢?
1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问。
2.内部类可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问。但是呢,外部类是不可以访问内部类的实现细节的,例如内部类的属性。
3.匿名内部类使用与于一次性使用的类。

内部类又分为非静态内部类和静态内部类两种。
1.非静态内部类:
定义内部类的话并不算难,就是把一个类放在另一个类中定义。这里的内部可以是外部类的任意位置,甚至可以在方法中定义。
定义内部类的语法如下:

public class Outerclass
{
    //此处定义内部类
}

非静态内部类,就是没有使用static修饰的内部类。
下面就是对非静态内部类的一个简单应用:

package test;

public class EncodeDemo
{
    //此处定义内部类
    public class A
    {
        void display()
        {
            System.out.println("非静态内部类");
        }
    }
    void show()
    {
        System.out.println("非静态外部类");
    }
    void use()
    {
        A a=new A();//A在外部类里就相当于一个方法
        a.display();
    }
    public static void main(String []args)
    {
        EncodeDemo e=new EncodeDemo();
        e.show();
        e.use();
    }
}

虽然非静态内部类可以访问外部类的私有成员,但是外部类的私有成员是不可以访问内部类里的属性和方法。
如果外部类想访问内部类里的属性和方法,就必须声明内部类对象来使用其对象和方法。

2.静态内部类
如果使用static来修饰一个内部类,则这个内部类那么这个内部类属于整个外部类,而不是属于外部类的某个对象。
静态内部类可以有静态成员,而非静态内部类则不能有静态成员。
静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量。
与一般内部类不同,在静态代码中不能够使用this操作,所以在静态内部类中只可以访问外部类的静态变量和静态方法。使用静态内部类的目的和使用内部类相同。如果一个内部类不依赖于其外部类的实例变量,或与实例变量无关,则选择应用静态内部类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值