【问题标题】:Facing problem while implementing interface in java在java中实现接口时面临的问题
【发布时间】:2019-01-23 01:50:01
【问题描述】:

我研究过

“实现接口的类必须实现接口中声明的所有方法”

我正在研究 CharSequence from this link这里CharSequence有4个方法,根据接口的定义,一个类必须实现接口的所有方法。

我创建了一个类并实现了 CharSequence 接口

但在这里我没有覆盖“toString()”方法并且工作正常。

我想知道,当我没有覆盖“toString()”时,我的代码没有给出任何错误,但如果我没有实现其他方法,它就会给出错误。

下面的代码对我有用,但我认为它应该给出一个错误。

    import java.util.*;
import java.lang.*;
public class Charsequence {

    public static void main(String args[]){
        System.out.println("hello...");
    }

}
class Subsequence implements CharSequence{

public char charAt(int index){
    return '1';
}

public int length(){
    return 1;
}

public CharSequence subSequence(int start, int end){
    return "" ;
}

/*public String toString(){
    return "";
}*/


}

抱歉英语不好。

谢谢你:)

【问题讨论】:

标签: java charsequence


【解决方案1】:

Java 中的所有类都扩展 Object 类。
这是因为 Object 类实现了toString()

【讨论】:

    【解决方案2】:

    所有类都有一个toString()方法,因为它们继承Object#toString,所以实际上是“实现”了。但是,您应该覆盖它并按照 CharSequence 文档的规定正确实施它。

    【讨论】:

      【解决方案3】:

      toStringjava.lang.Object 中实现。为了不抽象,一个方法只需要一个实现。即使该方法是在实现该接口的类的超类中实现的。

      在某些情况下,如果存在协变返回类型,您可能会在子类中获得合成方法。

      【讨论】:

        【解决方案4】:

        在 java 中,每个类默认扩展 java 中的 Object 类。 Object 类已经有 toString() 方法的默认实现。所以在java中创建的每个类都有默认的父类,即Object类。 在您的情况下,假设您的类名是 Test,Test 使用 Object 类中提供的 toString() 方法的默认实现。

        在编译期间,java 为每个类生成 .class 文件。如果您看到Test.class 文件的代码,它看起来像:

        class Test extends Object implements CharSequence{
        
           // YOUR CODE
        
        }
        

        如果你想提供toString() 的实现,你可以在你的类中重写它。

        【讨论】:

          【解决方案5】:

          所有 Java 类都扩展了一个名为 Object 的预定义类。 Object 类为您定义了一些方法,其中之一是toString()。如果我们没有在自己的类中定义toString(),则使用Object 类的toString()。 但是,如果我们正在实现一个接口,我们必须定义在该接口中声明的方法。如果我们不想在实现类中定义这些方法,则必须将其声明为abstract

          【讨论】:

            猜你喜欢
            • 2011-03-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-07-30
            • 1970-01-01
            • 1970-01-01
            • 2021-12-11
            相关资源
            最近更新 更多