1
2
3
4
5
6
  • AR开发
7
8
  • 系统优化与发布

多态

发布时间:2021-02-26 22:38   发布人:焦卫峰   浏览次数:363

1.成员隐藏

如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual 和 override,派生类的方法就会隐藏基类的方法。一般要求在派生类相同签名的方法上加上new关键字。

访问修饰符 new 类型 成员名

new 访问修饰符 类型 成员名

2.虚拟方法与方法重写

如果父类中的方法使用virtual关键字修饰,子类中的同名方法使用override修饰,那么该方法就构成了方法的重写。

public virtual 方法名称(参数列表){方法体;}       //基类

public override 方法名称(参数列表){方法体;}     //派生类

不管是方法隐藏还是方法重写,父类对象调用的是父类的方法,而子类对象调用的是子类的方法。

3.向上转型

当我们需要某个基类型的变量时,可以把某个派生类型的变量赋给基类型的变量,这种特性称之为向上转型。通俗点就是说先创建一个子类对象,然后把它强制转型为父类对象。

但是在向上转型后,重写基类方法调用的是派生类的方法,而隐藏基类调用的是基类的方法(重写基类方法实现了多态)。

4.多态性

一个基类的引用,可以指向多个派生类对象,具有多种不同的形态,这种现象叫做多态性。

多态性允许你将父对象设置成为一个或更多的它的子对象,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

class B:A{

          ……

}

A a = new A();

A b = new B();

 

static void test(A a);

A a=new A();

B b=new B();

test(b);