mysqlcluster

博客园 首页 新随笔 联系 订阅 管理

前期绑定:程序在编译之前将调用方法绑定,如面向过程的C语言。

后期绑定:程序在运行时决定与哪个方法绑定;如所有面向对象语言。

在java中,static和final是不参与多态的,就是说多态性对static和final描述的成员无效。

代码:

package com.pcitc.pattern.static1;

 

public class StaticAbstract {

   public static String staticVar = "我是父类的静态变量";

  

   public static void printStatic(){

     System.out.println("我是父类的静态方法");

   }

  

   public void printNoStatic(){

     System.out.println("我是父类的非静态方法");

   }

}

package com.pcitc.pattern.static1;

public class StaticBean extends StaticAbstract{

     public static String staticVar = "我是子类的静态变量";

    

     public static void printStatic(){

        System.out.println("我是子类的静态方法");

     }

    

     public void printNoStatic(){

        System.out.println("我是子类的非静态方法");

     }

}

package com.pcitc.pattern.static1;

 

public class Client {

 

  /**

   * @param args

   */

  public static void main(String[] args) {

     // TODO Auto-generated method stub

       

         StaticAbstract sa = new StaticBean();

         System.out.println(sa.staticVar);

         sa.printStatic();

         sa.printNoStatic();

 

         System.out.println("--------------");

        

         StaticBean sb = new StaticBean();

         System.out.println(sb.staticVar);

         sb.printStatic();

         sb.printNoStatic();

  }

 

}

运行结果:

我是父类的静态变量

我是父类的静态方法

我是子类的非静态方法

--------------

我是子类的静态变量

我是子类的静态方法

我是子类的非静态方法

通过以上代码示例,可得出:sa.printStatic();调用的是父类的静态方法,同StaticAbstract. printStatic(),没有多态。sa.printNoStatic();调用的是子类的方法,是多态。
posted on 2011-05-01 07:26  mysqlcluster  阅读(291)  评论(0编辑  收藏  举报