关于抽象类型对象,望高手能解惑!

水中钓鱼的猫 2011-07-11 05:55:07
比如 声明了一个抽象类,一个子类继承了抽象类,并重写了父类中的一个方法,实例化对象:父类 对象 = new 子类()
这时候,对象.方法()
是执行父类中的方法还是子类中的方法,为啥呢?望高手能解惑!
...全文
84 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
水中钓鱼的猫 2011-07-12
  • 打赏
  • 举报
回复
顶起来!!!!
xu_2007 2011-07-12
  • 打赏
  • 举报
回复
现在不是很流行用抽象类了,现在比较流行接口!
xu_2007 2011-07-12
  • 打赏
  • 举报
回复
这个问题问得还真抽象!!!!!!!!!
水中钓鱼的猫 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 criedshy 的回复:]
抽象类不能实例化,它必须借助于子类才只可以拥有实例,但是这样不能访问子类独有的成员。
[/Quote]
new的时候就new的一个子类的对象过去,这样怎么会丢失子类的成员呢?
criedshy 2011-07-11
  • 打赏
  • 举报
回复
抽象类不能实例化,它必须借助于子类才只可以拥有实例,但是这样不能访问子类独有的成员。
criedshy 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 criedshy 的回复:]
引用 3 楼 sy125603147 的回复:

引用 1 楼 criedshy 的回复:
如果是override 就是调用子类的方法,为啥,你子类都把父类的重写了,肯定是调用子类的,不然这重写也没意义。
如果是new,就是调用基类本身的方法。

这就是面向对象中的多态

那我在子类中定义了一个新的方法,这时候通过这个对象来调用新方法,不能调用到?


你为什么不自己动手试试……
[/Quote]

不可以

因为那个新方法只属于子类的

如果想调用必须

用子类去实例化
水中钓鱼的猫 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 criedshy 的回复:]
引用 3 楼 sy125603147 的回复:

引用 1 楼 criedshy 的回复:
如果是override 就是调用子类的方法,为啥,你子类都把父类的重写了,肯定是调用子类的,不然这重写也没意义。
如果是new,就是调用基类本身的方法。

这就是面向对象中的多态

那我在子类中定义了一个新的方法,这时候通过这个对象来调用新方法,不能调用到?


你为什么不自己动手试试……
[/Quote]
我就是试了,不行,我才来问问的。。。。。
criedshy 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sy125603147 的回复:]

引用 1 楼 criedshy 的回复:
如果是override 就是调用子类的方法,为啥,你子类都把父类的重写了,肯定是调用子类的,不然这重写也没意义。
如果是new,就是调用基类本身的方法。

这就是面向对象中的多态

那我在子类中定义了一个新的方法,这时候通过这个对象来调用新方法,不能调用到?
[/Quote]

你为什么不自己动手试试呢?







答案是可以的
水中钓鱼的猫 2011-07-11
  • 打赏
  • 举报
回复
up~~~~~~
水中钓鱼的猫 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 criedshy 的回复:]
如果是override 就是调用子类的方法,为啥,你子类都把父类的重写了,肯定是调用子类的,不然这重写也没意义。
如果是new,就是调用基类本身的方法。

这就是面向对象中的多态
[/Quote]
那我在子类中定义了一个新的方法,这时候通过这个对象来调用新方法,不能调用到?
水中钓鱼的猫 2011-07-11
  • 打赏
  • 举报
回复
up~~~~~~
criedshy 2011-07-11
  • 打赏
  • 举报
回复
如果是override 就是调用子类的方法,为啥,你子类都把父类的重写了,肯定是调用子类的,不然这重写也没意义。
如果是new,就是调用基类本身的方法。

这就是面向对象中的多态

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧