package duotai;
//车
interface Car{
String getName();
int getPrice();
}
//宝马
class BMW implements Car{
public String getName(){
return "BMW";
}
public int getPrice(){
return 1000000;
}
}
//奇瑞QQ
class CheryQQ implements Car{
public String getName(){
return "CheryQQ";
}
public int getPrice(){
return 66666;
}
}
//汽车经销商
public class CarShop {
private int money=0;
public void sellCar(Car car){
System.out.println("车型:"+car.getName()+",价格"+car.getPrice()+",所属类:"+car.getClass());
money+=car.getPrice();
}
public int getTotal(){
return money;
}
public static void main(String args[]){
CarShop carshop = new CarShop();
carshop.sellCar(new BMW());
carshop.sellCar(new CheryQQ());
carshop.sellCar(new AODIA6());
System.out.println("销售总收入:"+carshop.money);
//Car bmw = new BMW();
//Car cq = new CheryQQ();
}
}
//程序结果
/*
* 车型:BMW,价格1000000,所属类:class duotai.BMW
* 车型:CheryQQ,价格66666,所属类:class duotai.CheryQQ
* 销售总收入:1066666
*/
/*
* 以上便是多态的简单实例,一个通用的标准,具体的动作交由子类来处理,显然它的基础就是继承。
* 说到多态,就需要将绑定的概念联系在一起。
* 将一个方法调用同这个方法所属的主体(即对象或者是类)关联起来叫做绑定,它可以分为前期绑定和后期绑定两种。
* 前期绑定,是在程序运行之前进行绑定,主要由编译器实现,也称为静态绑定。
* 后期绑定,是在程序运行时进行绑定,由方法调用机制实现,也称为动态绑定。
*
* 多态就是在后期绑定的这种机制上实现的。它消除了类之间的耦合关系,使得程序更容易扩展。说到扩展,也是需要重构原有
* 代码的,这和修改有着本质的区别,需要加以区分。
* 对于上述代码要进行扩展,比如汽车经销商新进了奥迪A6,也进行了销售。则只需进行如下扩展:
*/
//增加aodi车类
class AODIA6 implements Car{
public String getName(){
return "aodiA6";
}
public int getPrice(){
return 400000;
}
}
//在main方法里增加如下语句:
//carshop.sellCar(new CheryQQ());
//扩展后程序运行的结果如下:
/*
车型:BMW,价格1000000,所属类:class duotai.BMW
车型:CheryQQ,价格66666,所属类:class duotai.CheryQQ
车型:aodiA6,价格400000,所属类:class duotai.AODIA6
销售总收入:1466666
*/
相关推荐
(五)——传了值还是传了引用(六)——字符串(String)杂谈 (七)——日期和时间的处理 (八)——聊聊基本类型(内置类型)(九)——继承、多态、重载和重写(十)——话说多线程 (十一)——这些运算符你是否...
“JAVA面试题解惑系列(九)——继承、多态、重载和重写”是面向对象编程的基础,继承允许类之间的层次结构,多态提供了一种“一个接口,多种实现”的灵活性,而重载和重写则涉及到方法签名和行为的差异。...
.63 1.9 JAVA面试题解惑系列(九)——继承、多态、重载和重写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 1.10 JAVA面试题解惑系列(十)——话说多线程 . . . . . . . . . . . . . . . ...
**1.10 JAVA面试题解惑系列(十)——话说多线程** - **知识点**:多线程编程基础,包括线程生命周期、线程同步、锁机制、线程安全问题及其解决方案,如`synchronized`关键字和`Lock`接口的使用。 **1.11 JAVA面试...
10.6 小结:继承和多态让世界丰富多彩 287 10.7 习题 290 第11章 修饰符(Qualifier) 291 教学视频:26分钟 11.1 插曲:类的组成部分的名字 291 11.2 类中的修饰符 292 11.2.1 无修饰符类 292 11.2.2 类的...
10.6 小结:继承和多态让世界丰富多彩 287 10.7 习题 290 第11章 修饰符(Qualifier) 291 教学视频:26分钟 11.1 插曲:类的组成部分的名字 291 11.2 类中的修饰符 292 11.2.1 无修饰符类 292 11.2.2 类的...
比如,在面试中,候选人可能被问到如何使用工厂模式来解决多态问题,或者如何利用装饰模式来扩展对象的功能,而这些问题的回答往往能够反映出候选人的编程素养和设计能力。 总的来说,《图说设计模式》不仅是一本...
- 使用继承和多态提高代码灵活性。 **3. 如何进行实验** - **定义实验目标:** - 明确希望通过实验验证什么假设。 - **设计实验方案:** - 选择合适的测试环境。 - 设计合理的对照组和实验组。 - **数据分析:...