书上讲的太抽象,请各位前辈用通俗的语言解释一下对象的对态性。
最好附上实例。
多谢啦!

解决方案 »

  1.   

    多态性的定义:对数据的操作可在不同的时间内保存、取用以及返回不同的类型值。
    多态性包括三方面: 运算符的重载:指同一运算符可以作用在多种对象类型上,包括用户定义的类型。 
    函数名重载:指相同函数名可以作用在不同的对象类型上,并产生不同的效果。 
    虚函数与动态联编:当重载的函数名前加 virtual标识符时,改函数称虚函数,它具有较大的灵活性,允许在运行时而非编译时按具体数据类型和参量来确定选用哪个函数,这种方式称为动态联编。 
      

  2.   

    Type
      TDog=Class
        private
        public
          procedure Call;Virtual;
      end;
      TYellowDog=Class(TDog)
        public
          procedure Call;Override;
      end;
      TBlackDog=Class(TDog)
        public
          procedure Call;Override;
      end;procedure TForm1.Button1Click(Sender: TObject);
    var
      DogList:Array[0..2] of TDog;
      i:integer;
    begin
      DogList[0] :=TYellowDog .Create ;
      DogList[1] :=TBlackDog  .Create ;
      DogList[2] :=TYellowDog .Create ;  for i:=0 to 2 do
       DogList[i].Call ;
     //看起来调用的是父对象的过程,可执行的确是不同的子类的代码,TDog是一个抽象的类所有的狗都会叫,你只要让狗叫就可以了,不用区分它是黄狗还是黑狗,黄狗自己会确定自己如何叫,黑狗也会有黑狗它自己的叫法。end;{ TYellowDog }procedure TYellowDog.Call;
    begin
      inherited;
      Showmessage('黄狗叫');
    end;{ TBlackDog }procedure TBlackDog.Call;
    begin
      inherited;
      Showmessage('黑狗叫');
    end;{ TDog }procedure TDog.Call;
    beginend;
      

  3.   

    这个帖子
    http://expert.csdn.net/Expert/topic/2064/2064895.xml?temp=.8297541
      

  4.   

    我想问一下
    delphi有运算符重载吗?那好像是c++的东西吧
      

  5.   

    同意 ZyxIp(绝望中...) 的