A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-王鹏 中级黑马   /  2013-3-18 08:56  /  2126 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马-王鹏 于 2013-3-18 11:34 编辑
  1. interface A{}
  2. class B implements A
  3. {
  4.         public String test()
  5.         {
  6.                 return "yes";
  7.         }
  8. }
  9. class Demo
  10. {
  11.         static A get()//什么意思?
  12.         {
  13.                 return new B();
  14.         }
  15.         public static void main(String[] args)
  16.         {
  17.                 A a=get();//什么意思?
  18.                 System.out.println(a.test());
  19.         }
  20. }//<FONT color=red>1,求A a=get();  static A get()  在程序中的注解?
  21. //2.求运行结果并解释哈为什么?谢谢</FONT>
复制代码

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

5 个回复

倒序浏览
static A get()//什么意思? 静态方法!如果不是本类调用需要类名点反方名。
A a=get();//什么意思?创建A对象 然后调用get方法给a对象赋值!
回复 使用道具 举报
楼主程序会出现编译错误,static A get() 方法是为了得到一个A类的对象,A a=get()可以理解为A a = new B(); 是java中多态的表现,而System.out.println(a.test());是调用A类中test方法,,成员函数在多态调用是,编译的时候是看左边的,运行时看右边,而A类中没有test方法,所以编译错误。

点评

很给力  发表于 2013-3-18 12:59
回复 使用道具 举报
  1. interface A{}
  2. class B implements A
  3. {
  4.         public String test()
  5.         {
  6.                 return "yes";
  7.         }
  8. }
  9. class Demo
  10. {
  11.         static A get()//定义一个static静态的方法返回值为A类型(定义成static是为了主方法中调用)
  12.         {
  13.                 return new B();
  14.         }
  15.         public static void main(String[] args)
  16.         {
  17.                 A a=get();//get()完整的写法是this.get(),表示本类中的get()方法,将get()方法的返回值A(实际上该语句等同于A a = new B();)
  18.                 System.out.println(((B)a).test());//该条语句才正确,test()方法是子类所特有的,父类对象要调用必须强转成子类对象。
  19.         }
  20. }
复制代码
祝你学习进步!
回复 使用道具 举报
本帖最后由 郝强勇 于 2013-3-18 10:00 编辑

interface A{}

class B implements A

{

        public String test()

        {

                return "yes";

        }

}

class Demo

{

        static A get()//什么意思?回答:定义了一个静态的get方法,方法的返回值是A类型的,方法体中返回的是B的实例对象,由于B是A接口的实现类,
                                                          所以代码可行,这即体现了多态的特点也体现了面向接口编程的思想。

        {

                return new B();

        }

        public static void main(String[] args)

        {

                A a=get();//什么意思?回答:调用自己Demo类中的get方法,方法的返回值为A类型的,用A类型的a接受一下返回值。
                                                               get返回值是A类型的B的实例对象,所以B的实例对象调用自己的test方法,也可行。

                System.out.println(a.test());//最后打印输出yes。

        }

}

    这段代码不复杂,但体现了一个很好的编程思想,也囊括了几个重要的知识点。



回复 使用道具 举报
陈团辉 发表于 2013-3-18 09:32
祝你学习进步!

第一个问回答的很给你,第二个问虽然编译通过了,但和我提的问不符合  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马