无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

多态总结

Posted on 2009-08-23 22:42 Gavin.lee 阅读(231) 评论(0)  编辑  收藏 所属分类: java SE & EE
多态性是指“多种形式”
它使用不同的实例而执行不同操作
多态包括静态多态性和动态多态性

1).静态多态性---编译时多态
即用相同的方法名定义不同的方法内容。编译时根据它们的特征来进行编译. 即:方法重载

2).动态多态性---运行时多态
一种在运行时调用重写方法的机制。子类对象可以作为父类对象使用,这是因为子类通过继承具备了父类的所有属性。在程序中凡是可以使用父类对象的地方,都有可以用子类对象来代替。

Java提供了 instanceof 运算符,来判断一个对象属于哪个类的实例。

(重载是根据需要重写一个方法或在其中加功能     
多态是根据需要传入不同参数构建不同的实例)

重写:动态多态性---运行时多态
package com.yixun.wap;

class Father {
    
protected void showInfo() {
        System.out.println(
"Father");
    }

}


class Son extends Father {
    
protected void showInfo() {
        System.out.println(
"Son");
    }


    
protected void showSex() {
        System.out.println(
"");
    }

}


class Daughter extends Father {
    
protected void showInfo() {
        System.out.println(
"Daughter");
    }


    
protected void showSex() {
        System.out.println(
"");
    }

}

/**
 * ******************************************
 * @descripte 运行时多态,动态多态性
 * 父类引用指向子类对象,实际对象为子类
 * java的这种机制遵循一个原则:当超类对象引用变量引用子类对象时, 
 * 是被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法, 
 * 但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。
 * 
@author Gavin.lee
 * @date 2009-8-24下午05:21:49
 * 
@version 1.0
 *
 ********************************************
 
*/

public class TestSon {
    
public static void main(String args[]) {
        Father fa;
        
        fa 
= new Son();     //向上转型,父类引用指向子类对象
        fa.showInfo();
        
//        fa.showSex();    //无法调用,父类无此方法        
        Son son = (Son)fa;    //向下转型
        son.showSex();

        fa 
= new Daughter();        
        fa.showInfo();
    }

}

/**
 *    Son
 *    男
 *    Daughter
 *同一个引用调用了相同名称的方法,结果却不一样---多态的体现
 
*/


只有注册用户登录后才能发表评论。


网站导航: