抱歉,你查看的文章不存在

唠唠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();
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

LinkedBear的个人空间

0 篇文章14 人订阅

相关文章

来自专栏个人随笔

房上的猫:楼主错题:解析

本题考查的是对java中数组的相关知识, 数组一旦定义就不能改变大小了;数组中存放的都是同一类型的数据;数组的下标是从0开始的,也就是说下标为0的位置存放的是第...

413110
来自专栏前端那些事

强大的原型和原型链

前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了...

20080
来自专栏深度学习计算机视觉

里式替换原则(LSP)

讲继承 所有引用父类的地方都必须可以透明的使用其子类对象 几个原则: 1、子类必须完全实现父类的方法 2、子类可以有自己的个性 3、覆盖或实现父类的方...

378120
来自专栏企鹅号快讯

轻松学习Python:基础知识汇总

Python基础01 Hello World! Python命令行 假设你已经安装好了Python, 那么在命令提示符输入: python 将直接进入pytho...

19180
来自专栏全沾开发(huā)

学习zepto.js(原型方法)[1]

学习zepto.js(原型方法)[1] 新的一周,新的开始,今天来学习一下zepto里边的原型方法,就是通过$.进行调用的方法,也是可...

40590
来自专栏mukekeheart的iOS之旅

final、finally、finalize的区别

final:修饰符,可以用于修饰成员、方法和类。 如果一个类被声明为final,意味着该类不能再派生出新的子类,不能作为父类被继承。因此一个类不能即被声明为ab...

25150
来自专栏iKcamp

翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 3 章:管理函数的输入

原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 第 3 章:管理函数的输入(In...

32470
来自专栏小蠢驴iOS专题

python入门_常见正则表达式匹配

24580
来自专栏java一日一条

Java 回顾 ( Revisiting Java )

最近在看一些工程代码,于是看了看设计模式,看设计模式之前发现Java是先修知识,又重新补了一遍Java,温故知新,获得一些新的体会。 本文不打算作为“Java知...

9120
来自专栏移动端开发

Swift 面向对象解析(一)

面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP)。面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组...

22570

扫码关注云+社区

领取腾讯云代金券