`
Spring_g
  • 浏览: 64077 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个理解多态的经典例子

    博客分类:
  • java
阅读更多
/*多态的应用,构建父类的变量,指向子类的对象
 * */
 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("狗爱吃骨头");
	}
}
2
3
分享到:
评论
1 楼 弯之虎 2011-11-13  

相关推荐

    C++继承与多态例子

    在这个例子中,`Animal`类定义了一个虚函数`makeSound()`,`Dog`和`Cat`类都覆盖了这个函数。我们通过`Animal`指针调用`makeSound()`,实际执行的是子类的版本,这就是动态多态。 总结起来,C++的继承使得我们可以...

    多态代码实例

    首先,我们需要理解多态的基本定义。多态是指一个接口可以有多种不同的表现形式或行为。在面向对象编程中,多态分为静态多态(编译时多态)和动态多态(运行时多态)。静态多态主要通过函数重载和运算符重载实现,而...

    java 多态 经典讲解

    例如,在上述例子中,`Instrument` 类是 `Wind` 类的父类,因此,一个 `Wind` 类的对象可以被当作 `Instrument` 对象使用。这种转换的关键在于,所有父类引用能够访问的成员,子类都必须拥有,这是向上转型的基础。 ...

    java 多态的含义和例子经典讲解

    本篇将通过一个经典例子深入解析多态的含义,并通过实际代码展示其应用。 首先,我们要理解多态的定义。在Java中,多态性(Polymorphism)是指同一种行为可以有不同的表现形式,或者同一个接口可以被多种类型的对象...

    多态的例子

    1) 理解重载运算符的意义。 2) 掌握(友元)运算符重载函数的实现方法。 3) 理解动态联编的概念,学习使用虚函数实现动态多态性。 4) 掌握虚函数和纯虚函数的使用方法。 5) 掌握抽象类的使用。

    C++经典实例——体现继承和多态

    在提供的压缩包“总实验”中,可能包含了多个C++源文件,每个文件代表一个特定的继承和多态的例子。通过分析这些实例,你可以看到如何在实践中应用这些概念,如何构建类层次结构,以及如何利用多态性提高代码的可...

    java多态理解

    理解多态首先要知道“向上转型”。我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过Cat c = new Cat();实例化一个Cat的对象,这个不难理解。但当我这样定义时:Animal a = new Cat();这...

    VS2010 C# 多态实例

    例如,我们可以创建一个泛型方法或泛型类,它们可以在各种数据类型上工作,从而实现多态。 6. 静态与实例方法:多态不仅限于实例方法,也可以应用到静态方法。但是,静态方法的多态性通常基于类型而不是对象,这...

    C#用趣图理解多态(用最通俗的方法讲解).

    在C#编程语言中,面向对象编程是核心特性之一,其中包括了多态这一重要概念。多态(Polymorphism)是面向...通过扫地车与拖拉机的例子,学生可以直观地理解多态、继承、封装等概念,从而降低学习难度,提升学习效果。

    c++继承与多态,虚函数实例

    继承允许一个类(子类)从另一个类(基类)继承属性和方法,而多态则允许不同类的对象对同一消息做出不同的响应,提高了代码的灵活性和重用性。虚函数在实现多态中扮演着关键角色,它可以确保程序在运行时能够调用到...

    c++ 的封装继承多态例子

    在C++编程语言中,封装、...通过学习和实践这些例子,开发者能够更好地理解和掌握C++的面向对象编程技巧,从而编写出更高效、更易于维护的代码。在实际开发中,封装、继承和多态是设计模块化、可扩展系统的关键工具。

    学习多态的虚函数例子

    学习多态的虚函数例子,更方便的理解多态,学习多态,更好的理解面向对象

    关于继承多态集合和IO的一个例子

    首先,**继承**是面向对象编程的一个关键特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这有助于代码重用和创建分层的类结构。例如,假设有一个`Animal`类,它有`eat()`和`sleep()`方法,然后你可以...

    理解java中的多态

    接下来,我们来看一个更具体的例子,以更好地理解多态的应用场景。 假设我们需要编写一个程序,用于管理各种不同类型的动物,这些动物都有一个共同的行为——叫声。我们可以定义一个抽象类`Animal`,然后创建多个...

    java多态小结

    ### Java多态详解 ...通过理解多态的工作原理,我们可以更灵活地设计和实现复杂系统,提高代码的复用性和可读性。掌握多态不仅有助于编写更高效、更健壮的代码,也是深入理解和运用面向对象编程思想的基础。

    继承和多态例子shape&&point

    继承是OOP中的一个关键特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和方法。这样,子类不仅可以重用父类的代码,还可以根据需要添加自己的特性和行为。在shape.cs和point.cs文件中,可能有...

    多态的应用

    例如,我们有这样一个简单的例子: ```cpp class Base { public: virtual void print() { cout ; } // 声明虚函数 }; class Derived : public Base { public: void print() override { cout ; } // 子类覆盖虚...

    基于C++的多态模式编写类的代码多态.docx

    在这个文档中,通过两个经典案例展示了如何在C++中实现多态。 首先,我们要理解什么是虚函数(Virtual Function)。在C++中,虚函数是通过在基类中使用`virtual`关键字声明的成员函数,它使得子类能够重写基类的...

    第十一章继承与多态

    继承是面向对象编程的一个核心特性,它允许一个类(派生类)继承另一个类(基类)的特性和行为。继承可以提高代码的复用性,减少冗余代码,并使程序结构更加清晰。 ##### 3.1 继承的基本语法 继承的基本语法如下:...

    C#多态小案例代码分享~

    首先,我们需要理解多态的基本概念。在C#中,多态主要体现在方法的重载(Overloading)和方法的重写(Overriding)上。方法的重载是指在同一个类中定义多个同名方法,但它们的参数列表不同。而方法的重写是指子类...

Global site tag (gtag.js) - Google Analytics