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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘海源 中级黑马   /  2012-7-21 18:55  /  4323 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解??

5 个回复

倒序浏览
本帖最后由 徐帅 于 2012-7-21 20:23 编辑

java的多态机制体现在编译时多态和运行时多态
分别体现为重载和覆盖

重载:只看同名函数的参数列表
这样可以方便阅读,允许用相同的运算符或方法
却表现出截然不同的意义,例如实现求和运算,
在参数上限定不同的类型。但是他们的作用都是求和
public int  add(int a, int b)
   {  return a+b;}
public double  add(double a, double b)
  {return  a+b ;}

覆盖:子父类方法要一模一样(包括返回值类型)
      当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,         但是功能的内容却和父类不一致,
       这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。
public void  show()
{
System.out.println("name "+name);
}
public  void show()
{
  System.out.println("name "+name+"::age"+age);
}

评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

回复 使用道具 举报
就是函数的重写和覆盖.父类引用子类对象.
回复 使用道具 举报
多态是依靠继承来实现的,当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。多态方法只在实例方法中起作用,个人的一些观点。:lol

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
多态的前提是继承,方法的重写和重载是Java多态性的不同表现。重载发生在一个类中.重写发生在子类。
重载:方法名相同,参数列表相同
重写:方法名相同,参数个数不同,参数的类型不同,参数在不同类型的情况下顺序不同

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
多态的体现:父类的引用指向了自己子类的对象,父类的引用也可以接收自己的子类对象。
多态的前提:必须是类与类之间有关系,要么继承,要么实现,通常还有一种情况是存在覆盖。
多态的弊端:提高扩展性,但只能用父类的引用访问父类的成员。
例如:Animal a= new cat( );//类型提升,向上转型
         a.eat();//猫是动物,调用共同方法:吃
如果想要调用父类的引用,转成子类类型
cat c=(cat)a;//如果想调用猫的特有方法,那么强制将父类的引用转成子类类型
c.catchMouse();
总结一下:我们能转换的是父类指向了自己子类对象的时候,可以被提升,也可以被强制转换。
多态始终是子类对象在做着变化。
记得毕老师上课举了一个例子是:   毕姥爷 x =new 毕老师();//向上转型
                                                毕老师 y  =(毕老师)x;//向下转型
                           
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马