我一直在玩继承和接口一点点,如果我有一个参数SomeClass c
的方法,我使用c.interfaceMethod();
我得到一个错误。如果我有一个参数c.interfaceMethod();
的方法,我该如何访问此方法SomeClass c
?
public class SomeClass{
public void someMethod(SomeClass c){
c.interfaceMethod(); <-- how to access this method?
//and other methods
}
}
public class someOtherClass extends SomeClass implements someClassInterface{
@Override
public void interfaceMethod(){
System.out.println("something");
}
}
public interface someClassInterface{
public void interfaceMethod();
}
答案 0 :(得分:1)
您必须按以下方式更改才能访问:
public class SomeClass{
public void someMethod(someOtherClass c){
c.interfaceMethod(); --> to access this method
//and other methods
}
}
答案 1 :(得分:1)
你的班级 someClass 是你班级 someOtherClass 的超级班级,所以家长班“超级班级”不知道任何关于<强> someOtherClass “子类”强> 而 interfaceMethod()方法属于someOtherClass,它是继承的基础之一。 仔细阅读http://docs.oracle.com/javase/tutorial/java/IandI/index.html
答案 2 :(得分:1)
如果要在SomeClass上定义interfaceMethod,则必须让SomeClass实现SomeClassInterface。如果您只想在子类中实现interfaceMethod,则必须使SomeClass成为抽象的。
所以将你的班级声明改为:
public abstract class SomeClass implements SomeClassInterface {
...
}
此外,按照惯例,所有类和接口名称都应以大写字母开头。
答案 3 :(得分:1)
您无法访问interfaceMethod
中类someOtherClass
的方法SomeClass
。您需要创建someOtherClass
的对象才能访问它。
可以更新如下:
public class SomeClass{
public void someMethod(someOtherClass c){
c.interfaceMethod();
//and other methods
}
}
答案 4 :(得分:1)
您还需要在someClassInterface
中实施SomeClass
public class SomeClass implements someClassInterface {
public void someMethod(SomeClass c){
c.interfaceMethod(); <-- now you can access this method
//and other methods
}
}