Java 我在代码的接口部分犯了什么错误?
我是Java初学者。我知道界面的概念。接口主要用于实现完全抽象,支持多重继承和松耦合的功能 可以有抽象方法和静态常量。它不能像抽象类那样被实例化和类似。接口是类的蓝图,它表示的是一种关系 我自己刚刚尝试了这个示例程序:Java 我在代码的接口部分犯了什么错误?,java,interface,Java,Interface,我是Java初学者。我知道界面的概念。接口主要用于实现完全抽象,支持多重继承和松耦合的功能 可以有抽象方法和静态常量。它不能像抽象类那样被实例化和类似。接口是类的蓝图,它表示的是一种关系 我自己刚刚尝试了这个示例程序: interface Printable{ void print(); } public class A implements Printable{ public void Print(){ System.out.println("Prints.."); } public
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”关系。@所以,这意味着接口表示公共契约,以便可以由任何其他类共享抽象方法?哦,对不起,这个小错误我没有找到。谢谢我参考了你提到的链接。“当一个抽象类被子类化时,该子类通常为其父类中的所有抽象方法提供实现。但是,如果它没有,该子类也必须被声明为抽象的。”您不清楚什么?正如上面所说的:要实例化的最终子类必须实现所有接口方法和所有抽象方法。这些可以在链期间在超类中实现,但如果还有任何抽象方法或未实现的方法,则必须使类抽象,并提供另一个子类来实现它们。哦,对不起,这个小错误我没有找到。谢谢我参考了你提到的链接。“当一个抽象类被子类化时,该子类通常为其父类中的所有抽象方法提供实现。但是,如果它没有,该子类也必须被声明为抽象的。”您不清楚什么?正如上面所说的:要实例化的最终子类必须实现所有接口方法和所有抽象方法。这些可以在链中的超类中实现,但如果还有任何抽象方法或未实现的方法,则必须将类抽象并提供另一个子类来实现它们。