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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wayonEmes 中级黑马   /  2015-7-25 18:41  /  6656 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wayonEmes 于 2015-7-31 00:49 编辑

为什么要说有方法重写是多态的前提呢?有的说方法不重写多态没有意义,这句话不是很懂啊,能不能帮忙解释一下或举例说明一下为什么会没有意义

13 个回复

倒序浏览
大家帮忙看一下哈,谢谢大家
回复 使用道具 举报
是的,不重写也可以但是没意义
回复 使用道具 举报
继承是多态的前提,继承不重写就没有意义了,飞机是一个类,只能飞,我想要战斗机,能打仗。假如再造一个飞机出来,飞机永远还是只能飞。那要继承这个概念就没什么用了。你应该多理解继承出现的原因:多个类有相同属性,行为,可以用现有类去构建一个新类。作用:1,提高代码复用。2,让类与类之间产生了一个关系。理解这个就行。
面向对象就是强调结果的一门语言,不用知道为什么格式为什么要这样,你只要知道怎么用就行。这是个人的理解,不到之处还望见谅。
回复 使用道具 举报
n361204357 发表于 2015-7-26 23:12
继承是多态的前提,继承不重写就没有意义了,飞机是一个类,只能飞,我想要战斗机,能打仗。假如再造一个飞 ...

假如是这样呢,虽然没有方法重写,可是一样也有新的功能加入啊
class A{
  void fly(){}
}
class B extends A{
  void fight(){}
}
回复 使用道具 举报
wayonEmes 发表于 2015-7-26 23:18
假如是这样呢,虽然没有方法重写,可是一样也有新的功能加入啊
class A{
  void fly(){}

你老爸老实,你吃喝嫖赌。
回复 使用道具 举报
n361204357 发表于 2015-7-26 23:22
你老爸老实,你吃喝嫖赌。

.....:L
这就是照着那个飞机说的啊,没有重写飞的方法,添加了战斗方法
回复 使用道具 举报
本帖最后由 CharnLau 于 2015-7-26 23:50 编辑

继续用飞机的例子吧!飞机会飞,但是飞机怎么飞?直升机会飞,战斗机会飞,但是他们的飞行方式不一样,直升机和战斗机是飞机的两种形态,所以当你继承飞机的时候,你需要重写飞机飞行的方法。如果你不重写方法,那战斗机和直升机的飞行方式就一样了!
面向对象是一个抽象的念,类也是抽象的概念,把具体事务的共有属性或者行为抽取出来封装在一个新的类中,属性不需要重写,直接赋值就可以!但是行为需要重写,因为同一种事物的多种形态的同一种行为的行为方式不同,不重写方法,那行为的方式就都一样了!那就不是多态了!
建议楼主把多态的概念和作用理解好来!
回复 使用道具 举报
一个父类的fuc()对应多个子类的fuc(),如果fuc()不重写的话那建立子类对象有什么意义呢
回复 使用道具 举报
wayonEmes 发表于 2015-7-26 23:31
.....
这就是照着那个飞机说的啊,没有重写飞的方法,添加了战斗方法

你老爸老实,不阻碍你个人的扩展。
回复 使用道具 举报
对啊,不重写就没有什么意义了啦!
回复 使用道具 举报
是的         
回复 使用道具 举报
不重写好像调用的是父类的方法
回复 使用道具 举报
多态一个重要作用是扩展,
当写一个工具类-动物,它要驾驭所有情况(猫会粘人,狗会看门,狼会打猎...等等)
就会把动物类作为形参接收具体的实参对象,这里就是多态
而方法重写,就是每个动物吃的东西都不一样,
class Animal {
      eat ( 吃 );
}
class Cat  extends Animal {
     eat ( 鱼 );
}
class Dog extends Animal  {
     eat( 骨头 );
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马