`

关于多态的理解

QQ 
阅读更多
package com.sdjt.study.extend;

/**
 * @author:lyy
 * @version 创建时间:2009-8-4 下午07:18:37 类说明
 */
// 汽车接口
interface Car {
	// 汽车名称
	String getName();

	// 获得汽车售价
	int getPrice();
}

// 宝马
class BMW implements Car {
	public String getName() {
		return "BMW";
	}

	public int getPrice() {
		return 300000;
	}
}

// 奇瑞QQ
class CheryQQ implements Car {
	public String getName() {
		return "CheryQQ";
	}

	public int getPrice() {
		return 20000;
	}
}

// 汽车出售店
public class CarShop {
	// 售车收入
	private int money = 0;

	// 卖出一部车
	public void sellCar(Car car) {
		System.out.println("车型:" + car.getName() + " 单价:" + car.getPrice());
		// 增加卖出车售价的收入
		money += car.getPrice();
	}

	// 售车总收入
	public int getMoney() {
		return money;
	}

	public static void main(String[] args) {
		CarShop aShop = new CarShop();
		// 卖出一辆宝马
		aShop.sellCar(new BMW());
		// 卖出一辆奇瑞QQ
		aShop.sellCar(new CheryQQ());
		System.out.println("总收入:" + aShop.getMoney());
	}
}

 将一个方法调用同这个方法所属的主体(也就是对象或类)关联起来叫做绑
定,分前期绑定和后期绑定两种。下面解释一下它们的定义:
1. 前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现,又叫做静态绑定。比如static方法和final方法,注意,这里也包括private方法,因为它是隐式final的。
2. 后期绑定:在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫做动态绑定,或者运行时绑定。除了前期绑定外的所有方法都属于后期绑定。多态就是在后期绑定这种机制上实现的。多态给我们带来的好处是消除了类之间的耦合关系,使程序更容易扩展。

比如在上例中,新增加一种类型汽车的销售,只需要让新定义的类继承Car类并实现它的所有方法,而无需对原有代码做任何修改,CarShop类的sellCar(Car car)方法就可以处理新的车型了。新增代码如下:

// 桑塔纳汽车
class Santana implements Car {
public String getName() {
return "Santana";
}
public int getPrice() {
return 80000;
}
}

 

分享到:
评论

相关推荐

    java多态理解

    Java多态理解 java中的多态性是面向对象编程的精髓所在。多态性是指父类引用指向子类对象,例如父类Animal,子类Cat和Dog。其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类。Animal animal = ...

    对java中多态理解

    对 Java 中多态理解 Java 中的多态是指在不同的情况下可以有不同的行为,多态是面向对象编程的一种基本特征。多态的实现是通过方法重载和方法重写来实现的。 在 Java 中,多态可以分为两种:编译时多态和运行时...

    java 三大特性--封装、继承和多态理解

    Java编程语言以其强大的功能和广泛的应用而闻名,其中三大特性——封装、继承和多态是其核心概念,对于理解和编写高效、可维护的代码至关重要。 **封装**是面向对象编程的基础,它涉及到将数据(属性)和操作这些...

    对于多态的理解

    ### 对于Java中多态的理解 #### 多态的基本概念 多态是面向对象编程语言中的一个重要特性,它使得程序可以在运行时确定具体的操作对象及其行为。简而言之,多态意味着一个接口可以有多种不同的实现,或者一个实体...

    关于继承和多态的简单练习

    通过查看和分析这些代码,你可以深入理解继承和多态的概念,并从中学习如何在实际项目中有效地运用它们。 总的来说,继承和多态是面向对象编程的关键要素,它们使得代码更加灵活、可扩展且易于维护。通过不断的实践...

    【Java面试题】谈谈对Java多态的理解

    【Java面试题】谈谈对Java多态的理解

    .Net写的关于多态练习

    标题所示的".Net写的关于多态练习"是一个针对.NET开发者的学习资源,通过实际的小例子来帮助理解多态的概念及其应用。 多态分为编译时多态和运行时多态。编译时多态主要通过方法重载(Overloading)实现,即在同一...

    一个HW 多态题目 一个HW 多态题目

    首先,我们要理解什么是多态。多态是指一个接口可以有多种不同的表现形式或行为。在C++中,多态主要通过虚函数实现。当基类指针或引用指向派生类的对象时,调用虚函数会根据实际的对象类型来执行相应的函数实现,这...

    C#第七章 深入理解多态.pdf

    C#第七章 深入理解多态.pdfC#第七章 深入理解多态.pdf C#第七章 深入理解多态.pdfC#第七章 深入理解多态.pdf C#第七章 深入理解多态.pdfC#第七章 深入理解多态.pdf

    labview创建多态VI

    - 保持每个分支的逻辑尽可能简洁,以便于理解和维护。 通过以上步骤,你可以在LabVIEW中创建出强大的多态VI,实现对不同数据类型的一体化处理。这种编程方式不仅提高了代码的效率,还减少了重复劳动,是LabVIEW...

    多态的理解.docx

    Java中的多态性是面向对象编程的一个核心概念,它与封装和继承一起构成了OOP的三大特性。多态性(Polymorphism)允许不同类型的对象能够对相同的消息或...理解和熟练运用多态对于进行高效和高质量的Java开发至关重要。

    多态代码实例

    本文将通过两个具体的代码实例,帮助你深入理解和掌握多态和虚函数的用法。 首先,我们需要理解多态的基本定义。多态是指一个接口可以有多种不同的表现形式或行为。在面向对象编程中,多态分为静态多态(编译时多态...

    C++继承与多态例子

    在C++编程语言中,继承和多态是面向对象编程(OOP)的两个核心概念。继承允许我们创建一个新类(子类),它继承了另一个类(父类)的属性和...通过深入理解继承和多态,开发者可以更好地设计和实现面向对象的解决方案。

    Java 多态应用,掌握多态

    理解并熟练运用多态,能够极大地提升程序设计的效率和代码的可读性。 首先,我们来详细解释一下多态的概念。多态分为编译时多态和运行时多态。编译时多态主要通过方法的重载(Overloading)实现,即在同一个类中...

    java 多态 经典讲解

    #### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态主要通过两种方式体现:*...

    多态的练习案例

    本练习案例将深入探讨多态的常见类型及其应用,旨在帮助初学者更好地理解和掌握这一关键概念。 1. **方法重载(Overloading)**:这是多态的一种形式,指的是在一个类中可以有多个同名方法,但它们的参数列表不同...

    原来多态还可以这样

    对于那些想要深入理解多态或者寻找编程灵感的开发者来说,这篇博文无疑是极具价值的。 由于未提供具体的压缩包文件内容,我们无法进一步分析博主的详细讲解。但是,"duotai"这个文件名可能暗示了博主讨论的多态性...

    java多态的总结

    理解多态的关键在于“向上转型”和“向下转型”。向上转型是指将子类对象赋值给父类引用,这是自动进行的,无须额外操作。例如: ```java Animal animal = new Cat(); // 向上转型,猫是动物的一种 animal.speak(); ...

    java多态小结

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

    关于C#继承多态的应用项目

    在C#编程语言中,继承和多态是面向对象编程的两大核心概念,它们极大地增强了代码的可重用性、灵活性和扩展性。本项目旨在通过实际操作来深入理解和应用这两个概念。 首先,让我们理解“继承”。继承允许一个类...

Global site tag (gtag.js) - Google Analytics