java 多态和接口实现

java polymorphism and interface implementation

我是二年级学生,我们目前正在学习 Java。我很困惑如何在标题上做这两个,尤其是在为我们提供的练习中。希望得到意见和帮助。谢谢!

问题:创建一个名为Comparison的接口,其方法可用于比较两个 时间objects。这些方法将包括 isGreater、isLess 和 isEqual。创建另一个 class 来实现这些方法。

到目前为止我的代码:

    import java.util.*;
    interface Comparison {
    boolean isGreater(Time x, Time y);
    boolean isLess(Time x,Time y);
    boolean isEqual(Time x, Time y);
}

public class Time implements Comparison {
    int am, pm;
    public boolean isGreater(Time x, Time y) {
        if (am > pm) {
            System.out.print("True");
        }
        else
            System.out.print("False");
    }
    public boolean isLess(Time x,Time y) {
        if (am < pm) {
            System.out.print("True");
        }
        else
            System.out.print("False");
    }
    public boolean isEqual(Time x, Time y) {
        
    }
    
}
public class Main {
    
    public static void main(String[] args) {
        System.out.println("Enter your first number: ");
        int x = new Time();
        System.out.println("Enter your second number: ");
        int y = new Time();
        
        }
    }

感谢您的帮助!

  1. Java 编译器不允许在同一个 java 文件中有 2 个 public 外部(顶级)classes
  2. 如果java文件有顶层publicclass,那么文件名应该匹配顶层publicclass名称
  3. 根据示例代码,ampm 的比较似乎与 Time 无关
  4. 在实际代码中,需要检查 Time 引用的 null
  5. return 类型 boolean 的方法应该 return 一个 boolean

示例代码

public boolean isGreater(Time x, Time y) {
  if (x == null && y == null) {
    return true; // you need to decide whether this is true or false
  } else if (x == null || y == null) {
    return false;
  }
  return x.getTime() > y.getTime(); // assumes getTime() returns a number
}

如果我正确理解了您的查询,即您正在尝试比较 2 个不同的时间值(如果这是唯一的情况),那么请参考下面的代码,否则请更多地解释您的要求,以便我可以更正源代码帮助你。

根据您的源代码,AM 和 PM 与时间无关。我们可以通过两种方式打发时间。

  1. 创造自己的时间class并使用它。
  2. 使用 dateTime/Date/calendar classes 提供时间值。

步骤:1 => 创建 Main class。 步骤:2 => 在 class 之外创建一个接口。将时间数据类型设为long。

interface Comparison {
    boolean isGreater(long xTime, long yTime);
    boolean isLess(long xTime, long yTime);
    boolean isEqual(long xTime, long yTime);
}

步骤 :3 => 创建一个 TimeManager[anyname] class 来实现比较接口。实现接口方法。

class TimeManager implements Comparison {
    @Override
    public boolean isGreater(long xTime, long yTime) {
        return xTime > yTime ? true : false;
    }

    @Override
    public boolean isLess(long xTime, long yTime) {
        return xTime < yTime ? true : false;
    }

    @Override
    public boolean isEqual(long xTime, long yTime) {
        return xTime == yTime ? true : false;
    }
}

步骤 :4 => 将调用语句写入 main 方法并使用来自 java.utils

的日期对象传递时间
public static void main(String[] args) {
          System.out.println("Enter your first number: ");
            long x = new Date().getTime();
            System.out.println("Enter your second number: ");
            long y = new Date().getTime();
    }

希望对您有所帮助。