zoukankan      html  css  js  c++  java
  • Java抽象类和接口

      抽象类是用来捕捉子类的通用特性的,描述的是一种事物,它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

      接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。

      抽象类是对整个类进行抽象,包括属性,行为,而接口是对类局部(行为)进行抽象。

      举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是会飞。那么在设计的时候,可以将客机设计为一个类Aircraft,将鸟设计为一个类Bird,但是不能将飞行这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将飞行设计为一个接口Fly,包括方法fly(),Aircraft和Bird分别根据自己的需要实现Fly这个接口。至于有不同种类的飞机,可以继承自一个飞机类,不同种类的鸟,可以继承自飞行动物这一类。

    代码实现如下:

    Fly接口:

    Animals的抽象类:

     

     飞机的抽象类:

    继承自Animals类,实现Fly接口的Bird:

     

    继承自Plane类,实现Fly接口的Aircraft类:

    根据实践,总结抽象类和接口的区别如下:

     

    参数 抽象类 接口
    默认的实现方法 可以有默认的方法实现 接口完全是抽象的,不存在方法的实现
    实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它必须提供抽象类里面的所有声明的抽象方法的实现。非抽象方法则不是必须实现 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
    构造器 抽象类可以有构造器 接口不能有构造器
    与正常Java类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型
    访问修饰符 抽象方法可以有public、protected和default这些修饰符 接口方法默认修饰符是public,不可以使用其他修饰符
    main方法 抽象类可以有main方法并且可以运行 接口没有main方法
    多继承 抽象类可以继承一个类和实现多个接口 接口只可以继承一个或多个其他接口
    速度 它比接口速度要快 接口稍微有点慢,因为它需要时间去寻找在类中实现的方法
    添加新方法 如果往抽象类里面添加新的方法,可以给它提供默认的实现,因此不需要改变现有的代码。 如果在接口中添加方法,那么必须改变实现该方法的类。
  • 相关阅读:
    冲刺第一天
    Nacos微服务体系配置管理
    Nacos配置中心客户端程序
    Nacos配置中心最佳实践
    SpringCloud2020整合Nacos-Bootstrap配置不生效的解决
    18.SpringCloud Alibaba Nacos服务注册和配置中心
    17、SpringCloud Alibaba入门简介
    SpringBoot热部署
    SpringBoot请求处理-常用参数注解使用
    5、创建springcloud alibaba工程
  • 原文地址:https://www.cnblogs.com/l199616j/p/11299221.html
Copyright © 2011-2022 走看看