唠唠SE的面向对象-11——内部类

11. 内部类

将类定义在另一个类的内部则成为内部类。

在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为成员内部类和局部内部类。

内部类生产的class文件为 “外部类$内部类.class”,为了标明该内部类是属于具体哪个外部类。

1. 内部类可以直接访问外部类的成员属性。(孙悟空相当于内部类飞到铁扇公主的肚子里面去)。

2. 外部类需要访问内部类的成员属性时需要创建内部类的对象。

    1)在外部类的成员函数中创建内部类的对象,通过内部类对象直接访问内部类的成员。

    2)在其他类中直接创建内部类的对象。

(由于此部分用的很少,就不贴代码啦 ̄へ ̄。。。)

 

什么时候使用内部类呢?

当我们分析事物时,发现事物的内部还有具体的事物,这时则应该定义内部类了。

比如人体是一个类,人体有心脏,心脏的功能在直接访问人体的其他内容。这时就将心脏定义在人体类中,作为内部类存在。

(由于此部分用的很少,就不贴代码啦 ̄へ ̄。。。)

 

内部类的优势:

成员内部类作为外部类的成员,那么可以访问外部类的任意成员。

1. 私有的成员内部类

特点:不能在其他类中直接创建内部类对象来访问

2. 静态的成员内部类

特点:如果内部类中包含有静态成员,那么内部类必须声明为静态内部类的形式:

 

 

匿名内部类:

没有名字的类,这种类必须重写一个类或继承一个抽象类或实现一个接口,用于精简代码。

之前说过抽象类和接口不能创建对象,但其实可以用匿名内部类创建对象,只需要在new的时候实现接口或抽象类中未实现的方法即可。

匿名内部类用的还是蛮多的,咱举个栗子:

abstract class Animal {
    public abstract void say();
}

public class Test1 {
    public static void main(String[] args) {
        Animal animal = new Animal() {
            @Override
            public void say() {
                System.out.println("不知名动物在嘶喊。。。");
            }
        };
        animal.say();
    }
}

转载于:https://my.oschina.net/LinkedBear/blog/1615278

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值