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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fmi110 高级黑马   /  2015-9-24 17:07  /  304 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

a
  1. 11、多态
  2.         定义:某一类事物的多种存在形态多态性简单说就是一个对象对应着不同类型。
  3.         体现:
  4.                 父类或者接口的引用指向或者接收自己的子类对象。
  5.         作用:
  6.                 多态的存在提高了程序的扩展性和后期可维护性。
  7.         前提:
  8.                 1. 需要存在继承或者实现关系。
  9.                 2. 需要有覆盖操作。
  10.         好处:
  11.                 提高了代码的扩展性,前期定义的代码可以使用后期的内容。
  12.         弊端:
  13.                 前期定义的内容不能使用(调用)后期子类的特有内容。
  14.         多态时,成员的特点:
  15.         1. 成员变量
  16.                 编译时:参考引用型变量所属的类中是否有调用的成员变量。 有,编译通过,没有,编译失败。
  17.                 运行时:参考引用型变量所属的类中是否有调用的成员变量,并运行该所属类中的成员变量。
  18.                 简单说:编译和运行都参考等号的左边。
  19.         2. 成员函数(非静态)
  20.                 编译时:参考引用型变量所属的类中是否有调用的函数。 有,编译通过。 没有,编译失败。
  21.                 运行时:参考的是对象所属的类中是否有调用的函数。
  22.                 简单说:编译看左边,运行看右边。
  23.         3. 静态函数
  24.                 编译时:参考的是对象所属的类中是否有调用的函数。
  25.                 运行时:参考的是对象所属的类中是否有调用的函数。
  26.                 简单说:编译和运行看左边。
  27.         ————————————————————————————————————————————————————————————————————
  28.                 //多态
  29.                         public class Test {
  30.                                 public static void main(String[] args) {
  31.                                         Fu f = new Zi();//多台,父类引用指向子类的实例
  32.                                         System.out.println("f.num = " +f.num);//多态引用的变量是父类的
  33.                         //                System.out.println("((Zi)f).num = "+((Zi)f).num);//强转后,子类的变量可见
  34.                                         f.method();//调用的还是子类的方法
  35.                                         f.show();//静态方法调用 的父类
  36.                                         f.method1();//错误,子类特有的方法,父类引用不可见
  37.                                 }
  38.                         }
  39.                         class Fu{
  40.                                 int num = 3;
  41.                                 public void method(){
  42.                                         System.out.println("Fu method");
  43.                                 }
  44.                                 public static void show(){
  45.                                         System.out.println("Fu static show");
  46.                                 }
  47.                         }
  48.                         class Zi extends Fu{
  49.                                 int num = 8;
  50.                                 public void method(){
  51.                                         System.out.println("Zi method");
  52.                                 }
  53.                                 public static void show(){
  54.                                         System.out.println("Zi static show");
  55.                                 }
  56.                                 public static void method1(){
  57.                                         System.out.println("Zi method1");
  58.                                 }
  59.                         }

  60.                         输出:
  61.                         f.num = 3
  62.                         Zi method
  63.                         Fu static show
  64.                 —————————————————————————————————————————————————————
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马