前沿:撰写博客的目的是为了再刷时回顾和进一步完善,其次才是以教为学,所以如果有些博客写的较简陋,是为了保持进度不得已而为之,还请大家多多见谅。
1.静态
为什么有静态?
-
需要定义公共资源,便于更多方使用。
-
像静态变量所有调用该变量看到的值都相等,购票方只需放出100张票,便能够让多方共抢。
如何实现静态?
-
static关键词
使用静态需要注意什么?
-
静态的开放权限大于非静态,所以非静态能够调用静态,而静态不能够调用非静态。
-
静态面向所有对象使用,所以最好通过类名.静态使用。
2.枚举
为什么有枚举?
-
枚举是一种变量,能够按要求选择固定内容的变量。
如何实现枚举?
-
像创建类一样,关键字enum。
3.包装类
为什么会有包装类?
-
因为基本类型不具有对象的特性,可以通过包装类使其具有对象性质,并且为其增加了属性和方法。
-
所以基本类型在创建时不使用new关键字,而包装类类型则需要new在堆中分配存储空间。
-
对象存储的是地址,所以需要调用方法使用equals比较。
-
4.抽象类
为什么会有抽象类?
抽象类是什么?
没有方法体的方法成为抽象方法,包含抽象方法的类必须为抽象类。
-
抽象类的目的是继承or实现类必须能够实现要求的功能。
如何创建抽象类?
-
abstract
使用抽象类易犯错误
-
抽象类创建对象没有意义,所以不能创建对象。
-
抽象类的定义为没有方法体的方法,那么自然调用不了对象,所以创建对象没意义。
-
-
继承抽象类,除非子类也是抽象类,不然必须实现父类所有抽象方法。
-
抽象类可以有普通方法,没有抽象方法。
-
但普通方法不能创建对象,所以不能使用该普通方法。
-
5.接口
为什么会有接口?
-
类似枚举一样,接口就是规范,要求按照一定规则实现功能才能被称为该类型。
接口的特点
-
接口的成员声明有限制:
(1)公共的静态常量
(2)公共的抽象方法
(3)公共的默认方法
(4)公共的静态方法
(5)私有方法(JDK1.9以上)
与继承的区别:
-
继承是“是不是”的问题,而抽象是“能不能”的问题。
如何创建接口?
-
interface 接口名
抽象类与接口的区别
-
接口支持多继承和多实现接口;
-
抽象类有构造器,而接口不能有构造器。
-
抽象类可以有默认方法实现,而接口是完全抽象的。
-
抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。
-
设计层面上的不同:
-
抽象类作为很多子类的父类,它是一种模板式设计。
-
接口是一种行为规范,它是一种辐射式设计。
-
接口和继承的出现会带来冲突问题
接口面试题
-
为什么接口中只能声明公共的静态的常量?
-
为什么JDK1.8之后要允许接口定义静态方法和默认方法呢?
-
为什么JDK1.9要允许接口定义私有方法呢?