码迷,mamicode.com
首页 > 其他好文 > 详细

对象的转型

时间:2014-10-28 23:38:17      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   java   sp   div   on   

对象的转型分为向上转型和向下转型

向上转型:将子类的对象赋值给父类的引用,如

Student s = new Student();
Person P = s ;

Student是Person的子类(继承)。首先声明了student的引用s,再同new关键字调用了构造函数生成student的对象,并把对象赋值给引用s,s指向对象。再把s赋值给Person类型的引用p

bubuko.com,布布扣

class Person{
      String name;

      void introduce(){
           System.out.println("我叫" + name);
      }
}
class Student extends Person{
      int age;

      void study(){
           System.out.println("我正在学习");
      }
    
      void introduce(){
           super.introduce();
           System.out.println("我" + age);
      }
}
class Test{
      public static void main(String args[]){
           Student s = new Student();
           Person p = s;
           //等同于 Person p = new Student();
           p.name = "lisi";
           p.age = 20;
           p.study();
      }
}

bubuko.com,布布扣

错误解释:根据上图所示,虽然s和p指向同一个对象,但一个引用能够调用的成员(变量和函数),取决于这个引用的类型,如p是Person的引用,p能调用的成员取决于Person中所定义的成员。

在父类中有个方法A,在子类中对方法A进行复写后,一个引用所调用的方法,取决于这个引用所指向的对象。如p调用introduce(),结果如下,p指向Student对象。

p.introduce();

bubuko.com,布布扣

 

向下转型:将父类的对象赋值给子类的引用,如

Student s1 = new Student();
Person P = s1 ;
Student s2 = (Student)p;//强制类型转换

bubuko.com,布布扣

向下转型的前提首先进行向上转型。父类对象的引用无法直接转型为子类的类型

bubuko.com,布布扣

 

对象的转型

标签:style   blog   http   color   ar   java   sp   div   on   

原文地址:http://www.cnblogs.com/chavez-wang/p/4058199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!