有两个类Person,Chinese,其中Person继承Chinese,
假如在Mian方法中Person p=new Chinese();
问这个p对象属于哪个类的对象?

解决方案 »

  1.   

    应该说是与Person.p对象可以调用Person的方法。 但是不能调用子类, 也就是Chinese中没有继承Person定义的的新方法。
      

  2.   

    Person p=new Chinese();这句反过来的才是正确的吧
      

  3.   

    有两个类Person,Chinese,其中Person继承Chinese,
    假如在Mian方法中Person p=new Chinese();
    问这个p对象属于哪个类的对象?p指向的是Chinese的,是向上转型,会丢失属性和方法,这样子 p不能访问Chinaese中的属性或方法,如果要访问的话需要强制转换,即向下转型,属于不安全的
      

  4.   

    p只是一个person类型的引用,指向一个Chinese对象
    就好比一个身份证对应一个实际的人
      

  5.   

    我也很郁闷,说P属于Person类吧?难道Chinese类不属于Person类吗?
      

  6.   

    逻辑错了,编译通不过.. 要 Chinese c = new person(); 因为Chinese才是父类..这样c指向person类,能够调用person内里继承自Chinese的方法和属性,但不能访问person类中独有的方法跟属性
      

  7.   

    三楼的您好:您说的有点道理,对象向上转型的话是可以的?
    比如:Person p=new Chinese();编译不会报错,
    如果:Person p1=new Person ();
    Chinese c=(Person)p1;结果编译的时候就报错啦
    ClassCastException对象强制类型转换出错
    这是什么情况啊
      

  8.   

    10楼的您好:Chinese是子类,Person是父类
      

  9.   

    强转的时候要instanceof判断一下是否是父类的引用指向子类的对象.是的话才能转,不是转的话会抛类型转换异常
      

  10.   

    Person p=new Chinese();
    p对象当然指向的是一个Chinese的引用。就是说p指向的是一个Chinese对象,但是由于p是Person形式的引用,所以只能通过p访问它所引用对象中在Person类中定义的方法和属性。使用 System.out.println(p instanceof Chinese);返回的是true
      

  11.   

    Person p=new Chinese();  这里很好理解啊, 因为Chinese继承了Person ,其实他也就在 Chinese里new出来了, 所以这里的 p 肯定是Person了撒,但是这里Chinese类可以重写方法 是会被调用的