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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马龙超 中级黑马   /  2012-6-11 18:29  /  2918 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. abstract class Person
  2.     {
  3.         public void SayHello()
  4.         {
  5.             Console.WriteLine("抽象类中");
  6.         }
  7.         public abstract void Speak();
  8.     }//抽象类,包括一个抽象方法Speak()和一个普通方法SayHello()
  9. class Chinese : Person
  10.     {
  11.         public override void Speak()
  12.         {
  13.             Console.WriteLine("实现类中");
  14.             base.SayHello();
  15.                    this.SayHello();
  16.         }
  17. }//继承上面的抽象类,其实现方法中用base.SayHello()调用了抽象类中的SayHello()方法
复制代码
上述代码测试通过,无错。
    问题在于,我们用base.SayHello()调用的是基类的SayHello()方法吧(因为base是基类的一个引用),但是抽象类不能被实例化,何来引用呢。即,我们不能实例化抽象类,怎么能够通过base来调用呢。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

5 个回复

倒序浏览
虽然没有实例化抽象类,base.SayHello();的访问形式就想静态方法的访问一样,base  指的就是Person类,明白了吧!

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
虽然没有实例化,静态方法的访问方式知道吧,通过类来访问方法,也没有实例化,base.SayHello();就相当于静态访问,base指的就是Person类!
回复 使用道具 举报
朱亮辉 发表于 2012-6-11 18:52
虽然没有实例化,静态方法的访问方式知道吧,通过类来访问方法,也没有实例化,base.SayHello();就相当于 ...

base不是同this一样吗,this就实例化了的
回复 使用道具 举报
黑马龙超 发表于 2012-6-11 18:55
base不是同this一样吗,this就实例化了的

base指向的是基类,而this指向的是当前对象的引用!
回复 使用道具 举报
本帖最后由 黑马龙超 于 2012-6-11 19:51 编辑
朱亮辉 发表于 2012-6-11 19:01
base指向的是基类,而this指向的是当前对象的引用!

我的意思是base也应该是实例化了的,指向的是基类的实例,而不是基类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马