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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Person{
  2.         String name;
  3.         int age;
  4.        
  5.         public void talk(){
  6.                 System.out.print("111");
  7.         }
  8. }
复制代码

  1. class Student extends Person{
  2.         String address;
  3.        
  4.         public void talk(){
  5.                 System.out.print("222");
  6.         }
  7.        
  8.         public void study(){
  9.                 System.out.print("study");
  10.         }
  11. }
复制代码

  1. class Test{
  2.         public static void main(String[] args){
  3.                 Student a = new Student();
  4.                 Person b = new Student();
  5.                
  6.                 a.talk();
  7.                 b.talk();
  8.                
  9.                 a.study();
  10.         //因为b是Person累的,所以b不能调用Student的study()方法。这里会报错
  11.         //b.study();
  12.         }       
  13. }
复制代码


在JAVA中,可以将子类对象赋给父类引用,但是“ 一个引用能够调用的成员,取决于这个引用的类型 ”。也就是说,如果我在Person类的b引用上是不能调用Student类的study()方法的。
但是,当子类将父类方法重写之后,最终调用的都是重写以后的方法,这个时候似乎又是由这个引用实际所指向的对象来决定能够调用的成员。这是为什么?

0 个回复

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