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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小忧伤 中级黑马   /  2016-5-23 23:17  /  477 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态时,成员访问的特点:

  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
                         

0 个回复

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