/*多态的应用,构建父类的变量,指向子类的对象
* */
package com.guang;
public class Duotai {
/**
* @param master
*/
public static void main(String[] args) {
/*
* Animal an=new Cat(); an.cry(); an=new Dog(); an.cry();
*/
Master master = new Master();
master.feed(new Dog(), new Bone());
}
}
class Master {
public void feed(Animal an, Food f) {
an.eat();
f.showname();
}
}
class Food {
String name;
public void showname() {
System.out.println();
}
}
class Fish extends Food {
public void showname() {
System.out.println("给你鱼");
}
}
class Bone extends Food {
public void showname() {
System.out.println("给你骨头");
}
}
class Animal {
String name;
public void eat() {
System.out.println("不知道吃什么");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
int age;
public void cry() {
System.out.println("不知道怎么叫");
}
}
class Cat extends Animal {
public void cry() {
System.out.println("猫猫叫");
}
public void eat() {
System.out.println("猫爱吃鱼");
}
}
class Dog extends Animal {
public void cry() {
System.out.println("汪汪叫");
}
public void eat() {
System.out.println("狗爱吃骨头");
}
}
分享到:
相关推荐
在这个例子中,`Animal`类定义了一个虚函数`makeSound()`,`Dog`和`Cat`类都覆盖了这个函数。我们通过`Animal`指针调用`makeSound()`,实际执行的是子类的版本,这就是动态多态。 总结起来,C++的继承使得我们可以...
首先,我们需要理解多态的基本定义。多态是指一个接口可以有多种不同的表现形式或行为。在面向对象编程中,多态分为静态多态(编译时多态)和动态多态(运行时多态)。静态多态主要通过函数重载和运算符重载实现,而...
例如,在上述例子中,`Instrument` 类是 `Wind` 类的父类,因此,一个 `Wind` 类的对象可以被当作 `Instrument` 对象使用。这种转换的关键在于,所有父类引用能够访问的成员,子类都必须拥有,这是向上转型的基础。 ...
本篇将通过一个经典例子深入解析多态的含义,并通过实际代码展示其应用。 首先,我们要理解多态的定义。在Java中,多态性(Polymorphism)是指同一种行为可以有不同的表现形式,或者同一个接口可以被多种类型的对象...
1) 理解重载运算符的意义。 2) 掌握(友元)运算符重载函数的实现方法。 3) 理解动态联编的概念,学习使用虚函数实现动态多态性。 4) 掌握虚函数和纯虚函数的使用方法。 5) 掌握抽象类的使用。
在提供的压缩包“总实验”中,可能包含了多个C++源文件,每个文件代表一个特定的继承和多态的例子。通过分析这些实例,你可以看到如何在实践中应用这些概念,如何构建类层次结构,以及如何利用多态性提高代码的可...
理解多态首先要知道“向上转型”。我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过Cat c = new Cat();实例化一个Cat的对象,这个不难理解。但当我这样定义时:Animal a = new Cat();这...
例如,我们可以创建一个泛型方法或泛型类,它们可以在各种数据类型上工作,从而实现多态。 6. 静态与实例方法:多态不仅限于实例方法,也可以应用到静态方法。但是,静态方法的多态性通常基于类型而不是对象,这...
在C#编程语言中,面向对象编程是核心特性之一,其中包括了多态这一重要概念。多态(Polymorphism)是面向...通过扫地车与拖拉机的例子,学生可以直观地理解多态、继承、封装等概念,从而降低学习难度,提升学习效果。
继承允许一个类(子类)从另一个类(基类)继承属性和方法,而多态则允许不同类的对象对同一消息做出不同的响应,提高了代码的灵活性和重用性。虚函数在实现多态中扮演着关键角色,它可以确保程序在运行时能够调用到...
在C++编程语言中,封装、...通过学习和实践这些例子,开发者能够更好地理解和掌握C++的面向对象编程技巧,从而编写出更高效、更易于维护的代码。在实际开发中,封装、继承和多态是设计模块化、可扩展系统的关键工具。
学习多态的虚函数例子,更方便的理解多态,学习多态,更好的理解面向对象
首先,**继承**是面向对象编程的一个关键特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于代码重用和创建分层的类结构。例如,假设有一个`Animal`类,它有`eat()`和`sleep()`方法,然后你可以...
接下来,我们来看一个更具体的例子,以更好地理解多态的应用场景。 假设我们需要编写一个程序,用于管理各种不同类型的动物,这些动物都有一个共同的行为——叫声。我们可以定义一个抽象类`Animal`,然后创建多个...
### Java多态详解 ...通过理解多态的工作原理,我们可以更灵活地设计和实现复杂系统,提高代码的复用性和可读性。掌握多态不仅有助于编写更高效、更健壮的代码,也是深入理解和运用面向对象编程思想的基础。
继承是OOP中的一个关键特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和方法。这样,子类不仅可以重用父类的代码,还可以根据需要添加自己的特性和行为。在shape.cs和point.cs文件中,可能有...
例如,我们有这样一个简单的例子: ```cpp class Base { public: virtual void print() { cout ; } // 声明虚函数 }; class Derived : public Base { public: void print() override { cout ; } // 子类覆盖虚...
在这个文档中,通过两个经典案例展示了如何在C++中实现多态。 首先,我们要理解什么是虚函数(Virtual Function)。在C++中,虚函数是通过在基类中使用`virtual`关键字声明的成员函数,它使得子类能够重写基类的...
继承是面向对象编程的一个核心特性,它允许一个类(派生类)继承另一个类(基类)的特性和行为。继承可以提高代码的复用性,减少冗余代码,并使程序结构更加清晰。 ##### 3.1 继承的基本语法 继承的基本语法如下:...
首先,我们需要理解多态的基本概念。在C#中,多态主要体现在方法的重载(Overloading)和方法的重写(Overriding)上。方法的重载是指在同一个类中定义多个同名方法,但它们的参数列表不同。而方法的重写是指子类...