在Java中使用类中的接口

时间:2013-10-15 23:14:50

标签: java class oop interface

我正在努力用Java来解决问题。如何使用方法giveCode()返回对象的整数值。这是由我们的讲师预先编写的代码,我们必须使用它来返回对象的整数值,它将在为哈希表创建哈希值时使用。

HashCode.java

// Interface for HashCode. Has only one method declaration
public interface HashCode {

    // For an input object, computes and returns its HashCode as an integer
        public int giveCode(Object o);

}

StringHashCode.java(我创建了这个类,因为我们应该在这个类中实现HashCode类)

public abstract class StringHashCode implements HashCode{


} 

我在我的主要部分尝试了这样的事情,只是为了简单地返回代码值,所以我可以看到它是如何工作的,但似乎没有任何工作:

System.out.println(new StringHashCode.giveCode(example_object));

或者

System.out.println(new StringHashCode.giveCode(example_object.hashCode()));

或者

System.out.print(HashCode.giveCode(example_object));

我对Java很新,但我对其他OOP语言有很多经验,但我似乎无法掌握这个问题,我觉得这可能是愚蠢的,但我不能把它弄出来。

3 个答案:

答案 0 :(得分:1)

由于您的讲师为您提供了该界面,您必须实施它。那可能是一堂课。它可以是您可能不需要的另一个接口,Abstract类对您的解决方案没用,所以使用简单的类并实现该接口。

class HashCodeImpl implements HashCode {
    @Overwide
    public int getCode(Object obj) {
        return obj.hashCode();
    }
}

并且在main方法中,该类应该用作

class Main {
    public static void main(String[] args){
        HashCodeImpl impl = new HashCodeImpl();
        System.out.println(impl.getCode(new String()));
    }
}

现在在你的问题中,我不知道你是如何得到任何输出的,因为你的系统都没有编译。

 System.out.println(new StringHashCode.giveCode(example_object));

此类的giveCode方法不是静态的,因此不会编译

 System.out.println(new StringHashCode.giveCode(example_object.hashCode()));

同样的原因,giveCode不是静态的,所以它不会编译,你必须传入一个对象和类假设返回有代码。在这种情况下,您将哈希代码传递给方法。

 System.out.print(HashCode.giveCode(example_object));

编译错误,因为HashCode是一个类似于原型的接口,你必须实现它来创建具体的类。

答案 1 :(得分:0)

  1. 使课程非抽象
  2. 编写方法实现
  3. 您缺少括号
  4. 修复这些问题,它会更好地为您服务。

     public class StringHashCode implements HashCode{
    
        public int giveCode(Object o) {
            return o.hashCode(); // Replace this with your own implementation
        }
    } 
    
    
    System.out.println(new StringHashCode().giveCode(example_object));
    

答案 2 :(得分:0)

  1. 您尝试在不使用()的情况下实例化该类。你想要new StringHashCode()
  2. 你试图实例化一个抽象类,这是不可能的。
  3. 你没有在任何地方实现过giveCode方法,所以很自然你无法调用它。