野原新之楠 2019-04-04 15:14 采纳率: 80%
浏览 700
已采纳

Java在抽象类中定义抽象方法后 再定义static 方法去调用抽象方法的意义是什么

之前课堂上布置的作业,今天看code 不是很明白为什么这样设计。

定义一个集合set 为 abstract class

部分代码如下:

public abstract class FSet {

    //定义 abstract method
    abstract boolean isEmptyMethod();

    //定义static method
    public static boolean isEmpty(FSet s) {
        return s.isEmptyMethod();
    }


}

public class EmptySet extends FSet {
    boolean isEmptyMethod() {
        return true;
    }
}

public class Include extends FSet {
    boolean isEmptyMethod() {
        return false;
    }
}

为什么要定义一个static 方法 然后去调用 abstract 方法? 这样做的目的是什么?
直接用子类去override 父类方法 有什么缺陷吗?

  • 写回答

3条回答 默认 最新

  • viewgroup 2019-04-04 15:37
    关注

    一般abstract都是根据需求来的,,当然了,,目前是教给你原理,,所以就忽略了现实需求,,你现在的想法就和小学学数学一样。。比如数学书举例,一边放水一边接水,你会觉得编写教材的人是傻子吗?同样的道理,,。。
    言归正传。。。abstract定义的抽象方法的意义是 定义一个所有属于这个类的子类都必须实现的接口。 比如人都有工作,但是父类是没有办法实现子类的工作细节的。所以定义一个job的abstract方法,这样子类就必须取实现这个方法了,,然后父类可以写一个getJob方法,getJob调用job方法,这样就不必关注子类对象是什么了,,只要子类实现了这个方法,,那么消费者只需要关注getJob即可。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器