如何访问方法?

时间:2014-02-02 17:27:47

标签: java inheritance interface composition

我一直在玩继承和接口一点点,如果我有一个参数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();

}

5 个答案:

答案 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

    }

}