细说java中的类

171 阅读3分钟

 最近在学习《java编程思想》 学到了内部类

  类不就是class吗 天天用 还能讲出花来了不成...

  其实不然,在java中,类的种类和使用方式多种多样,花样繁多。其中主要有

  普通类

  内部类(嵌套类)

  匿名类

  抽象类

  静态类

  密封类

  就先讲这么多吧。接下来将从应用场景、定义、实例化、这3个方面入手,了解一下关于类的基本常识。

  类的由来归根于物以类聚,人以群分。将世间万物相同的特征和行为提取(属性和方法),归纳总结成一个类型。是我们编程世界最常用也是最基础的单元。

  定义

  这是最基本的类的使用方式。

  可以看到我 加粗变色的部分。它定义在一个普通类(外部类)中,它也有自己的属性和方法,它能访问到外部类的成员变量,另外为了方便,一般会在外部中定义一个方法,来对外提供引用,也能够内部使用

  


  从变色的部分可以看出,这是个接口,而接口正常情况下是无法new的。在类里面却可以随意使用,只要实现接口的方法即可。

  这种使用方式,随处可见

  是不是很熟悉,做异步任务,定时任务常用到。

  是不是更熟悉了,做排序比较的时候经常用。在java中,匿名类无处不在。

  这种简写的方式相当于

  这个抽象类可以继承接口,可以不需要抽象方法,不过抽象类无法实例化,因为不是具象,它需要子类继承

  此时之类可以访问父类所有的public方法,如果父类有抽象方法,则子类必须要实现这个方法,除非之类也是一个抽象类。

  此时给抽象类加一个抽象方法,让子类来继承

  子类

  使用

  还可以绕过之类,自己写匿名类,对付接口的一招也能用于抽象类

  可以看到,之前不能new的抽象类,居然能跳过被之类继承的环境,直接采用匿名的方式实现抽象方法。

  使用的时候

  


  静态类属于比较特殊的存在,因为在整个内存中只有一份元数据。所以不存在实例化的可能,其实静态内部类才算是静态类。

  关键字 static

  关键字无法修饰类(仅限外部类),只能用于成员变量和方法。凡是有方法被static修饰的类,我们叫他静态类。

  静态变量,静态块,静态方法 静态内部类

  一般用于工具类或者类似枚举的成员变量比较固定的值的地方

  如下代码 展示了 静态变量,静态块,静态方法,静态内部类

  静态相关的 都不需要实例化,内存中仅一份

  密封类也叫最终类。和普通类没有区别,有属性有方法。唯一特性:无法被之类继承

  关键字:final

  创造这个类的人员觉得该类以及没有扩展的必要,也不行任何人扩展它,就会将类 加上final 修饰,使它无法被继承

  和正常类一样new就好啦。密封类在日常使用中见到的极少,使用场景不太广泛

  罗列了一圈下来,才发现,主角是内部类。

  算算看,非静态内部类,匿名内部类,静态内部类,抽象内部类,抽象静态内部类。还有lamda表达式,也是用的匿名类。