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

java 多态性举例

阅读更多

 

自己比较懒,上次面试遇到这个问题,回来查了下。网上查了,大概有这两种例子。
1.一种是普通的超类,子类覆盖父类的方法。
2.父类是抽象类,子类实现父类的抽象方法。

 

1.网上摘抄:

 

Game类是Football、Basketball、Popolong的父类,Games类使用前面4个类。

Java根据动态绑定决定执行“更具体”的方法,即子类方法。

  1. //Game.java
  2. package  cn.edu.uibe.oop;
  3. public   class  Game {
  4.   protected   void  play(){
  5.   System.out.println( "play game" );
  6.  }
  7. }
  8. //Football.java
  9. package  cn.edu.uibe.oop;
  10. public   class  Football  extends  Game {
  11.   protected   void  play() {
  12.     System.out.println( "play football" );
  13.      super .play();
  14.  }
  15.   void  f(){
  16.   play();
  17.  }
  18. }
  19. //Basketball.java
  20. package  cn.edu.uibe.oop;
  21. public   class  Basketball  extends  Game{
  22.   protected   void  play() {
  23.   System.out.println( "play basketball" );
  24.  }
  25. }
  26. //Popolong.java
  27. package  cn.edu.uibe.oop;
  28. public   class  Popolong  extends  Game {
  29.   protected   void  play() {
  30.   System.out.println( "play popolong" );
  31.  }
  32. }
  33. //Games.java
  34. package  cn.edu.uibe.oop;
  35. public   class  Games {
  36.   public   static   void  main(String[] args) {
  37.   Game[] games =  new  Game[ 10 ];
  38.   games[ 0 ] =  new  Basketball();
  39.   games[ 1 ] =  new  Football();
  40.   games[ 2 ] =  new  Popolong();
  41.   
  42.    for ( int  i= 0 ;i<games.length;i++){
  43.     if (games[i]!= null )
  44.       games[i].play();
  45.   }
  46.   
  47.  }
  48. }

 

2.from network

 

如在计算公司雇员工资的超类中

          // 用抽象方法作为多态接口 
    public abstract class Employee { 
        ... 
        public abstract double earnings();    //定义抽象方法作为多态接口 
    }
//这个方法将作为多态接口被子类的方法所覆盖 
    public class Manager extends Employee { 
    ... 
    public double eamings () return 0.0;

 

 

    抽象方法也可用protected.

  1. public   class  CircleShapeApp{  
  2.      public   static   void  main(String[] args) {  
  3.         Circle circle =  new  Circle( 12.98 );  
  4.         Sphere sphere =  new  Sphere( 25.55 );  
  5.    
  6.         Shape shape = circle;        //向上转型  
  7.          //多态调用  
  8.         shape.computeArea();  
  9.         shape.computeVolume();  
  10.         System.out.println( "circle area: "  + shape.getArea());  
  11.         System.out.println( "circle volume: "  + shape.getVolume());  
  12.          //多态调用  
  13.         shape = sphere;  
  14.         shape.computeArea();  
  15.         shape.computeVolume();  
  16.         System.out.println( "Sphere area: "  + shape.getArea());  
  17.         System.out.println( "Sphere volume: "  + shape.getVolume());  
  18.     }  
  19. }


  


  
分享到:
评论

相关推荐

    计算机后端-Java-Java核心基础-第13章 面向对象05 18. 多态性使用举例.avi

    计算机后端-Java-Java核心基础-第13章 面向对象05 18. 多态性使用举例.avi

    day08_08多态性的应用举例

    运行时实现Java的多态性

    Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。 一、通过继承中超类对象引用变量引用子类对象来实现 举例...

    java课程设计:日历记事本

    4、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 5、该系统的要求: (1)显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。 (2)定时提醒:...

    常见JAVA基础_4

    请举一个例子说明什么叫做“多态性”。 6。this和super各有什么含义? 7。试说明父类对象和子类对象的转换规则。 8。什么叫做默认构造函数? 9。在什么时候需要用到显式字段初始化? 10。如何在一个构造函数中...

    JAVA面试题最全集

    谈谈java多线程 23.谈谈文件加密技术 24.软件开发生命周期 25.路由协议种类及特点 26.java的awt和swing组件的GUI设计的关键 27.对于java流的认识 28.简单描述一下awt与swing区别。 29.简述java编程中事件处理...

    java初学者必看

    9.1 多态性概念 9.2 重载 9.2.1 重载概念 9.2.2 重载注意事项 9.3 覆盖 9.3.1 覆盖概念 9.3.2 覆盖与访问权限 9.3.3 静态方法覆盖 9.3.4 覆盖与异常抛出 9.3.5 抽象方法覆盖 9.3.6 覆盖与重载 9.4 静态...

    疯狂JAVA讲义

    5.7.1 多态性 151 5.7.2 引用变量的强制类型转换 152 5.7.3 instanceof运算符 154 5.8 继承与组合 154 5.8.1 使用继承的注意点 155 5.8.2 利用组合实现复用 156 学生提问:使用组合关系来实现复用时,需要创建...

    java 面试题 总结

    方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数...

    JAVA程序设计教程

    Java程序.............................................................................................6 1.3.1 Java程序的结构 ...........................................................................

    超级有影响力霸气的Java面试题大全文档

     方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和...

    进销存系统文档作业例子

    方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数...

    PHP3程序设计

    10.2.4 多态性函数 161 10.2.5 在类中定义类 162 10.2.6 引用:所指的值就是我的数据 165 10.2.7 有用的类函数 166 10.3 总结 166 第11章 中场三:生成HTML模块 168 11.1 HTML类的设计目的 168 11.2 生成一个基类 ...

    C++大学教程,一本适合初学者的入门教材(part2)

    10.6 实例研究:利用多态性的工资单系统 10.7 新类和动态关联 10.8 虚析构函数 10.9 实例研究:继承接口和实现 10.10 多态、虚函数和动态关联 小结 术语 自测练习 自测练习答案 练习 第11章 C++输入/输出流 ...

    C++大学教程,一本适合初学者的入门教材(part1)

    10.6 实例研究:利用多态性的工资单系统 10.7 新类和动态关联 10.8 虚析构函数 10.9 实例研究:继承接口和实现 10.10 多态、虚函数和动态关联 小结 术语 自测练习 自测练习答案 练习 第11章 C++输入/输出流 ...

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    9.2.8 多态性 245 9.2.9 标准库的差异 245 9.2.10 动态内存分配 245 9.3 优雅的C++ 246 9.3.1 消失了的宏 247 9.3.2 const修饰及类型转换 248 9.3.3 隐藏实现 248 9.3.4 引用而非指针 250 9.3.5 名字空间 250 9.4 ...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    9.2.8 多态性 245 9.2.9 标准库的差异 245 9.2.10 动态内存分配 245 9.3 优雅的C++ 246 9.3.1 消失了的宏 247 9.3.2 const修饰及类型转换 248 9.3.3 隐藏实现 248 9.3.4 引用而非指针 250 9.3.5 名字空间 250 9.4 ...

    C++大学教程

    1.9 Java、Internet与万维网--------------------------------------------7 1.10 其它高级语言------------------------------------------------------8 1.11 结构化编程-----------------------------------...

Global site tag (gtag.js) - Google Analytics