Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在代码的接口部分犯了什么错误?_Java_Interface - Fatal编程技术网

Java 我在代码的接口部分犯了什么错误?

Java 我在代码的接口部分犯了什么错误?,java,interface,Java,Interface,我是Java初学者。我知道界面的概念。接口主要用于实现完全抽象,支持多重继承和松耦合的功能 可以有抽象方法和静态常量。它不能像抽象类那样被实例化和类似。接口是类的蓝图,它表示的是一种关系 我自己刚刚尝试了这个示例程序: interface Printable{ void print(); } public class A implements Printable{ public void Print(){ System.out.println("Prints.."); } public

我是Java初学者。我知道界面的概念。接口主要用于实现完全抽象,支持多重继承和松耦合的功能

可以有抽象方法和静态常量。它不能像抽象类那样被实例化和类似。接口是类的蓝图,它表示的是一种关系

我自己刚刚尝试了这个示例程序:

interface Printable{
void print();
}
public class A implements Printable{
public void Print(){
    System.out.println("Prints..");
}
public static void main(String args[]){
    A obj=new A();
    obj.print();
}
}
产出是,

Compiling the source code....
$javac A.java 2>&1
A.java:4: error: A is not abstract and does not override abstract method print() in         Printable
public class A implements Printable{
^
A.java:10: error: cannot find symbol
obj.print();
^
symbol: method print()
location: variable obj of type A
2 errors
“A不是抽象的,不能重写抽象方法print()”是什么意思

我在这里犯了什么错误?所以我可以从错误中吸取教训

void print()
vs

这是一个重大错误

你得到了错误

A不是抽象的,并且不重写抽象方法print()

因为
抽象
类可以实现
接口
,而不需要实际实现它定义的方法

见:

在接口一节中,注意到实现接口的类必须实现接口的所有方法。但是,如果类被声明为抽象类,则可以定义一个不实现所有接口方法的类

错误消息的另一部分来自上述“大写”错误

vs

这是一个重大错误

你得到了错误

A不是抽象的,并且不重写抽象方法print()

因为
抽象
类可以实现
接口
,而不需要实际实现它定义的方法

见:

在接口一节中,注意到实现接口的类必须实现接口的所有方法。但是,如果类被声明为抽象类,则可以定义一个不实现所有接口方法的类


错误消息的另一部分来自上述“大写”错误。

错误非常明显

A.java:4: error: A is not abstract and does not override abstract method **print()** in         Printable

正如您看到的,方法是
print()
而不是
print()

错误非常明显

A.java:4: error: A is not abstract and does not override abstract method **print()** in         Printable

正如您看到的,方法是
print()
而不是
print()

请检查print()的拼写。它在界面中是小写的

请检查打印()的拼写。在接口中它是小写的

打印方法应该是小写的Java区分大小写
Print
Print
是不一样的。@DGomez您应该作为答案发布一个例子。“接口是类的蓝图,它代表的是一种关系。”这是不正确的。如果一个类型与一个现有类有很强的“is-a”关系,那么现在正是考虑继承的时候。接口用于表示可以由类共享的公共约定,即使它们与层次结构无关。对于接口,合同就是。。。而且不需要“is a”关系。@所以,这意味着接口指示公共契约,以便可以由任何其他类共享抽象方法?Print方法应小写Java区分大小写
Print
Print
是不一样的。@DGomez您应该作为答案发布一个例子。“接口是类的蓝图,它代表的是一种关系。”这是不正确的。如果一个类型与一个现有类有很强的“is-a”关系,那么现在正是考虑继承的时候。接口用于表示可以由类共享的公共约定,即使它们与层次结构无关。对于接口,合同就是。。。并且不需要“is a”关系。@所以,这意味着接口表示公共契约,以便可以由任何其他类共享抽象方法?哦,对不起,这个小错误我没有找到。谢谢我参考了你提到的链接。“当一个抽象类被子类化时,该子类通常为其父类中的所有抽象方法提供实现。但是,如果它没有,该子类也必须被声明为抽象的。”您不清楚什么?正如上面所说的:要实例化的最终子类必须实现所有接口方法和所有抽象方法。这些可以在链期间在超类中实现,但如果还有任何抽象方法或未实现的方法,则必须使类抽象,并提供另一个子类来实现它们。哦,对不起,这个小错误我没有找到。谢谢我参考了你提到的链接。“当一个抽象类被子类化时,该子类通常为其父类中的所有抽象方法提供实现。但是,如果它没有,该子类也必须被声明为抽象的。”您不清楚什么?正如上面所说的:要实例化的最终子类必须实现所有接口方法和所有抽象方法。这些可以在链中的超类中实现,但如果还有任何抽象方法或未实现的方法,则必须将类抽象并提供另一个子类来实现它们。