`
zengshaotao
  • 浏览: 777846 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

话说多态

    博客分类:
  • java
 
阅读更多

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
*/

分享到:
评论

相关推荐

    关于Java的几个经典问题

    (五)——传了值还是传了引用(六)——字符串(String)杂谈 (七)——日期和时间的处理 (八)——聊聊基本类型(内置类型)(九)——继承、多态、重载和重写(十)——话说多线程 (十一)——这些运算符你是否...

    Java面试题详解,和一些基础知识的深入剖析,个人认为非常棒

    “JAVA面试题解惑系列(九)——继承、多态、重载和重写”是面向对象编程的基础,继承允许类之间的层次结构,多态提供了一种“一个接口,多种实现”的灵活性,而重载和重写则涉及到方法签名和行为的差异。...

    JAVA面试题解惑系列合集

    .63 1.9 JAVA面试题解惑系列(九)——继承、多态、重载和重写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 1.10 JAVA面试题解惑系列(十)——话说多线程 . . . . . . . . . . . . . . . ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    10.6 小结:继承和多态让世界丰富多彩 287 10.7 习题 290 第11章 修饰符(Qualifier) 291 教学视频:26分钟 11.1 插曲:类的组成部分的名字 291 11.2 类中的修饰符 292 11.2.1 无修饰符类 292 11.2.2 类的...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    10.6 小结:继承和多态让世界丰富多彩 287 10.7 习题 290 第11章 修饰符(Qualifier) 291 教学视频:26分钟 11.1 插曲:类的组成部分的名字 291 11.2 类中的修饰符 292 11.2.1 无修饰符类 292 11.2.2 类的...

    图说设计模式.pdf.zip

    比如,在面试中,候选人可能被问到如何使用工厂模式来解决多态问题,或者如何利用装饰模式来扩展对象的功能,而这些问题的回答往往能够反映出候选人的编程素养和设计能力。 总的来说,《图说设计模式》不仅是一本...

    how-to-be-a-programmer-cn.pdf

    - 使用继承和多态提高代码灵活性。 **3. 如何进行实验** - **定义实验目标:** - 明确希望通过实验验证什么假设。 - **设计实验方案:** - 选择合适的测试环境。 - 设计合理的对照组和实验组。 - **数据分析:...

Global site tag (gtag.js) - Google Analytics