• 面向对象进阶(抽象、接口、内部类)


     抽象类:

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

    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

  • 相关阅读:
    QGIS之二十三矢量线融合
    FL Studio21.2.8中文版水果音乐制作的革新之旅!
    代码随想录算法训练营第五十二天|
    构建汽车技术与装备交流平台,“中国汽研”开启汽车产业高质量发展新章
    【分布式架构】单体优化遇瓶颈,负载均衡显神通
    MS1826A HDMI 多功能视频处理器 HDMI4进1出画面分割芯片
    Selenium+Pytest自动化测试框架能碰撞出什么样的火花
    洛谷P8815:逻辑表达式 ← CSP-J 2022 复赛第3题
    Linux下的截图工具 —— Spectable
    企业应用超融合架构的设计实例及超融合应用场景分析
  • 原文地址:https://www.cnblogs.com/suwejie/p/16923014.html