java中接口中未定义的Get方法

java中接口中未定义的Get方法,java,interface,Java,Interface,我有一个接口“Messenger”,它定义了4种方法。然后在“Messenger Eng”类中,我继承了“Messenger”接口,还添加了一个未定义的方法“msgExample”。 问题:如何访问“msgExample”方法(未在“Messenger”界面中定义)?为了访问msgExample方法,您必须具有指向Messenger的指针,因为这是可以包含该函数的最高对象引用。您可以将其强制转换为所需的类型。例如: Messenger msg = new MessengerEng(); ((Me

我有一个接口“Messenger”,它定义了4种方法。然后在“Messenger Eng”类中,我继承了“Messenger”接口,还添加了一个未定义的方法“msgExample”。
问题:如何访问“msgExample”方法(未在“Messenger”界面中定义)?

为了访问msgExample方法,您必须具有指向Messenger的指针,因为这是可以包含该函数的最高对象引用。

您可以将其强制转换为所需的类型。例如:

Messenger msg = new MessengerEng();
((MessengerEng) msg).methodNotInterface();

但这是一个不安全的强制转换,所以如果有,请小心使用。

我有一个例子。请阅读并告诉我您是否希望这样做

interface Messenger{
public void Method1outof4();
}
class MessengerEng implements Messenger{
    public void Method1outof4(){
    System.out.println("Interface method");
}
public void msgExample(){
    System.out.println("Non-Interface method");
}
}
class testInterface{
public static void main(String[] args){
    MessengerEng m = new MessengerEng();
    m.Method1outof4();
    m.msgExample();
}
}

投吧。尽管您可能想问自己为什么这样做是必要的,因为这可能会破坏对接口编程的意义。如果您的引用对象只是类型
Messanger
,那么您就不能这样做(不能没有强制转换/反射等)。如果你给我们展示一个你所说的例子,我们可能会提供一个替代建议,因为我觉得你的场景可以通过稍微的设计调整来解决。@BoristheSpider-这是必要的,因为这是我的一个任务点。也许你可以给我一个如何实现的例子?”然后在“Messenger Eng”类中,我继承了“Messenger”接口,并添加了一个未定义的方法“msgExample”--你是在实现Messenger接口还是在Messenger Eng中扩展Messenger接口?如果(Messenger Eng的msg实例)应该会有所帮助。