A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hi潘 中级黑马   /  2015-6-15 23:44  /  513 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态:指同一个实体同时具有多种形式
好比,你去面馆吃面,说我要吃面,那么;老板给我牛肉面,鸡蛋面等都可以,
这就是说"面"有多种形态,也就是说实体有多种形态;
编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定。
如果编译时类型和运行时类型不同,就出现多态。
实现多态的机制:
父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。

多态的作用:
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
只修改方法的实现,不必修改方法的声明
继承是多态产生的前提条件;

分类:
编译时多态:方法重载
运行时多态:方法覆写
  1. package test;

  2. class Dog{
  3.         void eat(){
  4.                 System.out.println("一般的狗吃一般的狗粮!");
  5.         }
  6. }

  7. class HashDog extends Dog{
  8.         void eat(){
  9.                 System.out.println("哈士奇吃哈士奇的狗粮!");
  10.         }
  11. }

  12. class ZangAoDog extends Dog{
  13.         void eat(){
  14.                 System.out.println("藏獒吃藏獒的狗粮!");
  15.         }
  16. }

  17. //定义一个动物园喂的方法
  18. class Zoo{
  19.        
  20.         void feed(Dog d){
  21.                 d.eat();
  22.         }
  23.        
  24. }

  25. public class Demo11 {
  26.         public static void main(String[] args) {
  27.                
  28.                 Dog hd = new HashDog();
  29.                
  30.                 Dog zd = new ZangAoDog();
  31.                
  32.                 Zoo z = new Zoo();
  33.                 z.feed(hd);
  34.                 z.feed(zd);
  35.         }
  36. }
复制代码



1 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马