`
蒙面考拉
  • 浏览: 160571 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

多态赋值

 
阅读更多
#include <iostream> 
using namespace std;
class Pet //基类
{ public:
   virtual void Speak() { cout<<"How does a pet speak ?"<<endl; } 
};
class Cat : public Pet //派生类
{public:
    void Speak() { cout<<"miao!miao!"<<endl; }
}; 
class Dog : public Pet //派生类
{public:
    void Speak() { cout<<"wang!wang!"<<endl; }
};
void test (Pet &testClass){
      testClass.Speak();
}

int main()
{
    Pet obj,*p1; //基类对象指针p1, 基类对象obj
    Dog dog1;
    Cat cat1; 
    obj = dog1; //用Dog类对象给Pet类对象赋值
    obj.Speak(); 
    p1 = &cat1; //用Cat类对象地址给基类指针赋值
    p1->Speak(); 
    p1 = &dog1; //用Dog类对象地址给基类指针赋值
    p1->Speak(); 
    Pet &p4 = cat1; //以Cat类对象初始化Pet类引用 
    p4 .Speak();
	test(dog1);
	system("pause");
    return 0;
}

  

输出是:How does a pet speak ?  miao!miao!   wang!wang!   miao!miao!  wang!wang!

分享到:
评论

相关推荐

    C#多态性的介绍

    // 多态赋值 b.F(); b.G(); a.F(); // 调用的是B类的F方法 a.G(); // 调用的是B类的G方法,体现了多态性 } } ``` 在这个例子中,虽然`a`变量是`A`类型,但实际上它引用的是`B`类型的实例。因此,当调用`a.G()...

    多态的练习案例

    6. **向上转型与向下转型**:多态中的向上转型是指将子类对象赋值给父类引用,允许我们使用父类的所有非私有成员。向下转型则是将父类引用转换为子类引用,以访问子类特有的成员。需要注意的是,不正确的向下转型会...

    Java 多态应用,掌握多态

    4. **向上转型(Upcasting)与向下转型(Downcasting)**:向上转型是指将子类对象赋值给父类引用,这是隐式的,编译器允许这么做,因为子类是父类的特例。而向下转型则是将父类引用转换为子类对象,需要显式进行,...

    java多态的总结

    向上转型是指将子类对象赋值给父类引用,这是自动进行的,无须额外操作。例如: ```java Animal animal = new Cat(); // 向上转型,猫是动物的一种 animal.speak(); // 如果Cat类重写了speak(),则调用的是Cat的...

    java多态小结

    例如,在使用集合框架时,我们可以声明一个`List`类型的变量,然后将其赋值为`ArrayList`、`LinkedList`等不同实现的具体实例,而无需关心具体是哪一种实现,因为所有实现都遵循相同的接口规范。 此外,多态也是...

    Java 开发工程师(初级)招聘试题 笔试部分

    // 多态赋值 a.fun1(); // 调用B中的fun1 } } ``` **知识点**: 1. **方法重写**:子类中定义的方法与父类的方法具有相同的签名(方法名、参数列表和返回类型),且方法体不同。 2. **多态**:通过父类引用指向...

    Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    当我们创建一个接口类型的引用并将其赋值给实现该接口的类的对象时,这个引用变量可以调用接口中定义的所有方法。在运行时,实际调用的是哪个实现类的方法,取决于引用变量实际指向的对象。 以下是一个简单的例子:...

    java 多态 经典讲解

    向上类型转换是指将子类的对象赋值给父类的引用,这一过程是自动进行的,无需显式转换。例如,在上述例子中,`Instrument` 类是 `Wind` 类的父类,因此,一个 `Wind` 类的对象可以被当作 `Instrument` 对象使用。...

    Java 面向对象三大特性之多态

    5. **向上转型与向下转型**:在Java中,子类对象可以赋值给父类引用,这被称为向上转型。这种转型在编译时即可完成,因为所有子类都继承自父类。反之,将父类引用转换为子类对象的过程称为向下转型,但需要在运行时...

    一个多态的例子

    最近看DELPHI高手突破,把里面多态的说明,用代码实现了一下。多态性是允许用户将父对象设置成为与一个或更多的它的子对象相等的技术,赋值之后,基类 对象就可以根据当前赋值给它的派生类对象的特性以不同的方式...

    java基础_多态

    1. 向上转型(Upcasting):将子类对象赋值给父类引用,这是自动完成的,无需显式转换。 2. 向下转型(Downcasting):将父类引用转换为子类对象,需要进行强制类型转换,并且只有在确定对象实际是子类类型时才能...

    经典c/c++多态实例

    静态类型是变量声明时的类型,动态类型是实际赋值的对象类型。虚函数调用依赖于动态类型。 7. 多态的应用:多态在设计模式(如工厂模式、策略模式等)、接口设计、游戏编程、图形库等领域都有广泛应用,它可以提高...

    多态和接口学习笔记

    3. **向上转型**:子类对象可以被赋值给父类引用,这种转换称为向上转型。在向上转型后,可以通过父类引用调用父类的所有非私有成员,但如果尝试调用子类特有的成员,编译器会报错,因为此时编译器只知道这是一个...

    继承和多态.doc

    // 将子类对象赋值给父类引用 pa = new Child_A(); pa.simpleCall(); // 调用Child_A的实现 pa = new Child_B(); pa.simpleCall(); // 调用Child_B的实现 } } ``` 在这个例子中,`Parent`接口定义了一个名为...

    多态示例代码

    例如,我们可以将一个`Dog`对象(假设`Dog`是`Animal`的子类)赋值给`Animal`类型的引用,这样就可以通过父类引用调用子类的方法。但需要注意的是,强制类型转换可能引发`ClassCastException`,因此在进行转换前应...

    C语言实现多态链表

    这样,我们可以在运行时动态地为`void *`赋值,存储任何类型的数据。 ```c typedef struct Node { void *data; struct Node *next; } Node; ``` 2. **宏定义处理**:利用C语言的宏,我们可以创建一组通用的操作...

    Java语言中的 覆盖重载和多态

    在Java中,子类可以被视为其父类的一种类型,即子类对象可以赋值给父类类型的变量,这被称为类型多态。比如: ```java Person p = new Student(); ``` 多态的优点在于它可以提供接口与实现的分离,使得代码更加...

    Java 多态中的类型转换

    本篇将深入探讨Java多态中的类型转换,包括向上转型(Upcasting)和向下转型(Downcasting),以及相关的注意事项。 1. **向上转型(Upcasting)** 向上转型是指将子类的对象引用赋值给父类的引用。在Java中,这是...

    继承和多态的相关Java源码下载

    对于变量,表示该变量一旦赋值后就不能改变。 7. **构造器与继承**: 子类可以调用父类的构造器初始化父类的状态。子类构造器的第一行通常是`super(parameters)`,用于调用特定的父类构造器。 8. **访问父类的...

    类的多态练习_C++_类的多态练习_

    `std::vector`、`std::list`等容器也支持多态性,因为它们可以存储任何类型的对象,只要这些对象满足一定的条件(通常是具有公有默认构造函数、复制构造函数和析构函数,以及可以被赋值的类型)。 总的来说,理解并...

Global site tag (gtag.js) - Google Analytics