黑马程序员技术交流社区

标题: 多态时,成员访问的特点 [打印本页]

作者: 小忧伤    时间: 2016-5-23 23:17
标题: 多态时,成员访问的特点
多态时,成员访问的特点:

  1.总体规则:多态时,访问的成员在父类中必须要有;否则编译错误(也就是我们之前所说的:多态时,父类的引用不能访问子类特有成员)
  2.多态的几种形式:
                  1).类的多态:
                                  class Animal{}
                                  class Cat extends Animal{}
                                  main(){
                                          Animal a = new Cat();
                                  }
                  2).抽象类多态:
                                  abstract class Animal{
                                          public abstract void show();
                                  }
                                  class Cat extends Animal{
                                          public void show(){
                                          }
                                  };       
                                  main(){
                                          Animal a = new Cat();//OK的
                                          a.show();//OK的--访问的是子类重写的show()
                                  }
                  3).接口多态:
                                  interface IA{
                                          public void show();
                                  }
                                  class Sub implements IA{
                                          public void show(){
                                                 
                                          }
                                  }
                                  main(){
                                          IA a = new Sub();//OK的
                                          a.show();//OK的--访问的是Sub的show()
                                         
                                  }
  3.多态时,成员访问的特点:
                  1).成员变量:编译看左边(编译时,父类中必须要有这个成员,否则编译错误),运行看左边(访问的是父类的);
                                  class Animal{
                                          int num = 20;
                                         
                                  }
                                  class Cat exstends Animal{       
                                         
                                          int n = 10;
                                          int num = 30;
                                  }
                                  main(){1
                                          //多态:
                                          Animal a = new Cat();
                                          System.out.println(a.n);//多态时,不能访问子类特有成员
                                          System.out.println(a.num);//OK的-->20(访问的是父类的)
                                  }
                  2).成员方法:编译看左边,运行时看右边;
                                  class Animal{
                                          void show(){
                                                  System.out.println("a");
                                          }
                                  }
                                  class Cat extends Animal{
                                          void show(){
                                                  System.out.println("b");
                                          }
                                  }
                                  main(){
                                          //多态
                                          Animal a = new Cat();
                                          a.show();//b
                                  }
                  3.静态方法:编译看左边,运行看左边;
                                  class Animal{
                                          public static void show(){
                                                  System.out.println("a");
                                          }
                                  }
                                  class Cat extends Animal{
                                          public static void show(){
                                                  System.out.println("b");
                                          }
                                  }
                                  main(){
                                          Animal a = new Cat();
                                          a.show();//a
                         






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2