黑马程序员技术交流社区

标题: 两个问题,求解答,谢谢 [打印本页]

作者:  『无』尘    时间: 2013-11-18 03:57
标题: 两个问题,求解答,谢谢
interface A{               
        public String AUTHOR = "张三" ;       
        public void print() ;       
        public String getInfo() ;       
}
interface B{         
        public void say() ;       
}
class X implements A,B{
        public void say(){
                System.out.println("Hello World!!!") ;
        }
        public String getInfo(){
                return "HELLO" ;
        }
        public void print(){
                System.out.println("作者:" + AUTHOR) ;
        }
};
public class InterfaceDemo03{
        public static void main(String args[]){
                X x = new X() ;       
                x.say() ;
                x.print() ;
        }
};


问题1:请问这个程序里的 getInfo(){return "HELLO" ;}    方法 为什么没有执行,写了个方法却不执行,那写这个方法有什么用呢?
问题2:此方法里的return "HELLO"。都说return是返回数据,那这个"HELLO"返回给谁了,最后的打印结果和这个"HELLO"好像没任何关系,那这个返回值有其他什么意义么,求大侠们解答       


作者: 梁健生    时间: 2013-11-18 07:04
首先回答你第一个问题,String getInfo()  执不执行是看你是否需要调用,而如果你不需要而不调用其作用就是单纯的必须复写而已,这是接口强制的,不解释。

第二个问题,“hello”既然是返回值,那么谁调用它,就返回给谁!如果不需要那么它的意义仅是使interface内的的方法达到全部复写的作用。
作者: 松毛    时间: 2013-11-18 08:14
因为X实现了接口A和接口B,所以在子类X中都需要覆盖其父类接口中的方法。所以必须要实现getInfo方法。“HELLO”没有打印是因为你没有调用,当你在主函数中调用了X.getInfo()时,就会打印“HELLO”了,就像你调用X.print()和X.say()一样。
作者: ┾——黑马    时间: 2013-11-18 09:08
问题1:请问这个程序里的 getInfo(){return "HELLO" ;}    方法 为什么没有执行,写了个方法却不执行,那写这个方法有什么用呢?
答:你都没有调用怎么执行啊!!!谁需要HELLO这个字符串,谁就调用它。因为你实现了接口所以必须要实现getInfo这个方法,这是语法定义。

问题2:此方法里的return "HELLO"。都说return是返回数据,那这个"HELLO"返回给谁了,最后的打印结果和这个"HELLO"好像没任何关系,那这个返回值有其他什么意义么,
答: 还是那句话,谁调用它了它就将“HELLO”返回给谁,还有在实现接口的时候,要看清楚你是否需要其中的功能,如果不需要就没有必要实现,这个接口中的方法你不需要,不代表别的类不需要。
作者: 黄炳期    时间: 2013-11-18 13:20
你不调用,哪来的执行
作者:  『无』尘    时间: 2013-11-18 15:24
我用 x.getInfo()  调用了这个方法,但是编译报错啊,哪位能告诉我调用该怎么调用才不报错?
作者:  『无』尘    时间: 2013-11-18 15:40
┾——黑马 发表于 2013-11-18 09:08
问题1:请问这个程序里的 getInfo(){return "HELLO" ;}    方法 为什么没有执行,写了个方法却不执行,那写 ...


我用 x.getInfo()  调用了这个方法,但是编译报错啊,怎么调用才不报错?
作者:  『无』尘    时间: 2013-11-18 15:43
松毛 发表于 2013-11-18 08:14
因为X实现了接口A和接口B,所以在子类X中都需要覆盖其父类接口中的方法。所以必须要实现getInfo方法。“HEL ...

调用不应该是小写的x么,大写的X不对吧?
作者:  『无』尘    时间: 2013-11-18 15:44
黄炳期 发表于 2013-11-18 13:20
你不调用,哪来的执行

我用 x.getInfo()  调用了这个方法,但是编译报错啊,怎么调用才不报错?
作者: 松毛    时间: 2013-11-18 16:28
 『无』尘 发表于 2013-11-18 15:44
我用 x.getInfo()  调用了这个方法,但是编译报错啊,怎么调用才不报错?

这个方法只是返回了!要打印才会出来!System.out.println(x.getInfo());
作者: 呆呆呆    时间: 2013-11-18 17:03
冒个泡~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2