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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© .net_交流 中级黑马   /  2014-7-29 14:55  /  958 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 .net_交流 于 2014-7-29 18:45 编辑

一个类继承另一个类后,方法相同时隐藏父类的方法,调用方法时看变量的类型,谁能解释下为什么??

还有就是子类重写父类虚方法时,为了实现多态 为什么会执行子类的方法,底层原理是什么?

评分

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

查看全部评分

2 个回复

倒序浏览
本帖最后由 许庭洲 于 2014-7-29 15:36 编辑

using System;
class Vehicle//定义汽车类
{
       public int wheels;//公有成员:轮子个数
       protected float weight;//保护成员:重量
       public Vehicle(int w,float g)
       {
                wheels=w;
                weight = g;
      }
      public virtual void Speak()
      //基类虚方法的重载是函数重载的另一种特殊形式。在派生类中重新定义此虚函数,
     //要求的是方法名称,返回值类型,参数表中的参数,类型,顺序都必须与基类中的虚函数完全一致。
    {
               Console.WriteLine("The vehicle is speaking!");
       }
};
class Car:Vehicle//定义轿车类
{
     //类中两个以上的方法(包括隐藏而来的方法),取得名字相同,
    //只要使用的参数类型或者参数个数不同,编译器知道在何种情况下因该调用哪个方法。
       int passengers;//私有成员:乘客数
       public Car(int w,float g,int p):base(w,g)
       {
                wheels=w;
               weight=g;
               passengers=p;
       }
      public override void Speak()
     //在派生类中声明对虚方法的重载,要求在声明中加上override关键字,
     //而不能有new,static或virtual修饰符。
      {
              Console.WriteLine("("The car is speaking: Di-di!");
      }
}
class Truck:Vehicle//定义卡车类
{
        int passengers;//私有成员:乘客数
        float load;//私有成员:载重量
        public Truck(int w,float g,int p,float l):base(w,g)
        {
                    wheels =w;
                    weight=g;
                    passengers=p;
                    load=1;
        }
       public override void Speak()
       {
                 Console.WriteLine("The truck is speaking:Ba-ba!"):
       }
}
class Test
{
       Vehicle v1=new Vehicle ();
       Car c1=new Car(4,2,5);
       Truck t1 =new Truck(6,5,3,10);
       v1.Speak();
       v1=c1;
       v1.Speak();
       c1.Speak();
       v1=t1;
       v1.Speak();
      t1.Speak();
   }
}
//--------------------------------------------程序结果----------------------------------------------//
The Vehicle is speaking!
The car is speaking: Di-di!
The car is speaking: Di-di!
The truck is speaking: Ba-ba!
The truck is speaking:Ba-ba!
//--------------------------------------------程序结果----------------------------------------------//





评分

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

查看全部评分

回复 使用道具 举报
同学你好,当有人给你回复后,请及时把贴子编辑为提问结束,这样版主才给你加技术分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马