suwejie

 抽象类:

我们把没有方法体的方法称为抽象方法。

Java语法规定,包含抽象方法的类就是抽象类。

 

抽象方法 : 没有方法体的方法。

抽象类:包含抽象方法的类。

 

抽象类不一定有抽象方法,但是有抽象方法的类必须定义成抽象类。

 

抽象类不能创建对象

 

继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。

 

抽象类的特征总结起来可以说是 有得有失

有得:抽象类得到了拥有抽象方法的能力。

有失:抽象类失去了创建对象的能力。

 

抽象类存在的意义是为了被子类继承,否则抽象类将毫无意义。抽象类可以强制让子类,一定要按照规定的格式进行重写。

接口 :

抽象类跟接口的主要区分:

抽象类可以理解成标准

接口可以理解成功能

 

接口中成员的特点:

成员变量只能是常量,默认修饰符:public static final

没有构造方法

成员方法只能是抽象方法,默认修饰符:public abstract

 

Jdk7 之前接口中只能定义抽象方法。

 

接口和类的关系:

实现关系,可以单实现,也可以多实现。

 

接口跟接口的关系:

继承关系,可以单继承也可以多继承。如果实现类实现了最下面的接口,则需要重写所有的方法。

 

多学三招:

jdk8开始之后接口新增的方法:

 

  1. 允许接口中定义默认方法,需要使用关键字default修饰。主要用来解决接口升级问题。

注意事项:

默认方法不是抽象方法,不强制重写,但是重写了要去掉default

public可以省略,default不能省略。

如果实现了多个接口,多个接口当中有名字相同默认方法,实现类就需要对默认方法进行重写。

 

新增定义静态方法,使用static修饰。

 

jdk9中可以定义私有方法,主要是为默认方法跟静态方法服务。

 

  1. 接口中的应用

接口代表规则,是行为的抽象。当一个方法的形参是抽象方法是,可以传递它所有的实现类。这种方式称为接口多态。

 

  1. 适配器设计模式

设计模式(Design pattern)是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验的总结。简单理解:设计模式就是各种套路

 

适配器设计模式:解决接口与接口实现类之间的矛盾。

一个接口抽象方法过多,但是我只需要使用其中一部分,就可以使用适配器设计模式。

 

实现方法:

创建一个抽象类xxxAdapter,实现所有接口,让真正的实现类继承抽象类选择需要的功能使用。

 

内部类: 

写在一个类的内部就叫内部类

成员内部类:B类表示的对象是A类的一部分,且B类单独存在无意义,就可以将B类创建为内部类。

 

内部类的访问特点

内部类可以直接访问外部类的成员,包括私有

外部类要访问内部类必须先创建对象

 

内部类的分类按定义的位置区分:

 

成员内部内,类定义在了成员位置 (类中方法外称为成员位置,无static

修饰的内部类)

静态内部类,类定义在了成员位置 (类中方法外称为成员位置,有static

修饰的内部类)

局部内部类,类定义在方法内

匿名内部类,没有名字的内部类,可以在方法中,也可以在类中方法外。

 

匿名内部类是内部类的简化写法。他是一个隐含了名字的内部类。开

发中,最常用到的内部类就是匿名内部类了。

 

实际上,如果我们希望定义一个只要使用一次的类,就可考虑使用匿名内

部类。匿名内部类就是一个对象,它的本质作用是为了简化代码

 

匿名内部类必须继承一个父类或者实现一个父接口

 

 匿名内部类的特点

定义一个没有名字的内部类

这个类实现了父类,或者父类接口

匿名内部类会创建这个没有名字的类的对象

练习:

https://download.csdn.net/download/weixin_65861329/87075901

相关文章: