• Java进阶(8)——抽象类与接口


    抽象类

    • 抽象类无法实例化:抽象类是类和类之间的共同特征,将这些具有共同特征进一步抽象成了抽象类。由于类本身是不存在的,所以抽象类无法创建对象,而对象是现实中存在的。
    • 语法
    [修饰符列表] abstract class 类名{
           	类体;
    }
    
    • 1
    • 2
    • 3
    • 抽象类的子类可以是抽象类
    • 抽象类虽然无法实例化,但是抽象类有构造方法。这个构造方法是供子类使用的。
    • 抽象方法:表示没有实现的方法,没有方法体的方法
      exp:
    public abstract void doSome();
    
    • 1
    • 抽象类不一定有抽象方法
    • 如果一个方法是抽象方法,那么它所在的类一定是抽象类。
      exp:
    abstarct class Animal{
            public abstract void move();
        }
    
    • 1
    • 2
    • 3
    • 【重要】一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。
    • 抽象类属于引用数据类型
    • 抽象的本质是为了多态:Animal a = new Bird();

    接口类

    • 也是一种引用数据类型,编译后也生产.class文件
    • 接口是完全抽象的
    • [修饰符列表] interface 接口名()
    • 接口支持多继承 interface C extends A,B{}
    • 接口只包含两个部分,一个是常量,一个是抽象方法。public abstract 可省略。接口中的所有内容都是public。接口中的常量public static final可以省略。
    • 接口中的方法都是抽象方法,这些方法不能有方法体。
    • 类实现接口要实现所有的方法。且实现后public不能省略。
    • 有了接口就有了“可插拔”,类似于内存条一般可以“插拔”,十分简便。
      exp:
    interface MyMath{
        int sum(int a,int b);
    }
    
    class MyMathImpl implements MyMath{
        //int sum(int a,int b){
        //    return a+b;
        //}
        public int sum(int a,int b){
            return a+b;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    一个类可以实现多个接口

    Java中类和类只支持单继承,实现多个接口,实际上就类似多继承,从而弥补单继承的缺陷。

    继承和实现都存在时,如何写代码?

    extends关键字在前,implements关键字在后
    exp:

        main函数中:
        Flyable f = new Cat();//多态
        interface Flyable{
            void fly();
        }
        Class Cat extends Animal implements Flyable{//实现飞猫
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    接口在开发中的作用

    接口在开发中的作用类似于多态在开发中的作用
    exp:

    public class Master{
        public void feed(Dog d){..}
        public void feed(Cat c){..}
    }
    
    • 1
    • 2
    • 3
    • 4

    上述代码当再新增宠物的时候需要改动代码,扩展力差
    使用多态
    exp:

    public void feed(Animal a){
        //面向Animal父类编程,父类比子类更抽象
        //面向抽象编程,不要面向具体编程
        //如此,程序扩展力强
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    仅需修改,Animal a = new Cat();Animal a = new Dog();即可

    从项目上看接口的意义

    有了接口之后,我们可以将项目划分为多个项目组,分工完成。如下Food Menu接口实现了America Cooker和China Cooker实现类,项目组一根据这两个实现类与Food Menu接口完成项目。而项目组二直接根据Food Menu类和Customer类来完成项目。
    请添加图片描述
    刚入门的程序员抽象能力不佳,多是去写一些实现方法。当成为慢慢成为系统架构师,高级软件工程师,项目经理,系统分析师之后,就开始写接口程序。

  • 相关阅读:
    GoLong的学习之路(三)语法之运算符
    JS逆向实战23——某市wss URL加密+请求头+ws收发
    10 种常用的字符串方法
    java常用算法面试题,总结到位
    烟花效果,H5+C3+JS实现
    分布式并行训练(DP、DDP、DeepSpeed)
    Kotlin高仿微信-第12篇-单聊-图片
    C++文件操作函数
    ES写入数据报错:retrying failed action with response code: 429
    Unity3D 基础——通过四元数控制对象旋转
  • 原文地址:https://blog.csdn.net/qq_16488989/article/details/126069319