我想学习一下 多态
定义了 两个类 A
类 B
B继承了A, 即B是A的子类, A是B的基类那么想要执行多态 ,是不是在A的方法中加入 virtual 在B的方法中加入override 然后
B b = new A(); b.b_mode(); 这样就可以了吧? 但是我编写的代码,怎么报错。 B b = new A(); 这个地方有错。
定义了 两个类 A
类 B
B继承了A, 即B是A的子类, A是B的基类那么想要执行多态 ,是不是在A的方法中加入 virtual 在B的方法中加入override 然后
B b = new A(); b.b_mode(); 这样就可以了吧? 但是我编写的代码,怎么报错。 B b = new A(); 这个地方有错。
只能 A b = new B();
这样才对,LZ不理解多态的概念。多态是允许将父对象设置成为和一个或多个它的子对象相等的技术,比如Parent:=Child; 多态性使得能够利用同一类(基类)类型的指针来引用不同类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作
比如:定一个Person接口(可以是Inderface也可以是Class)有动作Speak(),然后定义Teacher,Student类实现Person接口。
接下来就能如下定义:
Person a = new Teacher();
Person b = new Student();
a,b表现出来的就是多态,因为可以如下调用:
a.Speak();
b.Speak();
a,b的Speak动作调用的是不同的