java基础--对象转型和多态

对象转型(casting):

        1、一个基类的引用类型变量可以是指向子类的对象。

        2、一个基类引用不能访问子类对象新增加的成员(属性和方法)。

        3、可以使用引用变量instaceof来判断该引用类型变量所“指向”的对象是否属于该类,或者该类的子类。

       

        4、 子类对象可以作为基类对象使用,称为(upcasting)“向上转型”,基类对象当做来使用称为(downcasting)“强制转换”。

 

       例如,代码如下:

      

[java] view plain copy
 
 print?
  1. Class Animal  
  2. {  
  3.     Public String name;  
  4.     //构造函数。  
  5.     Animal(String name)  
  6.     {  
  7.         This.name = name;  
  8.     }  
  9. }  
  10. Class Cat extends Animal  
  11. {  
  12.     Public String eyesColor;  
  13.     Cat(String n, String c)  
  14.     {  
  15.         Super(n);   
  16.          eyeColor = c;  
  17.     }  
  18. }  
  19. Class Dog extends Animal  
  20. {  
  21.     Public String furColor;  
  22.     Dog(String n, String c)  
  23.     {  
  24.         Super(n);  
  25.         furColor(c);  
  26.           
  27.     }  
  28.       
  29. }  
[java] view plain copy
 
 print?
  1. Pulic class Test  
  2. {  
  3.     Public static void main(String args[])  
  4.     {  
  5.         Animal a = new Animal("name");  
  6.         Cat c = new Cat("Catname","blue");  
  7.         Dog d = new Dog("dogname","black");  
  8.           
  9.         System.out.println(a instanceof Animal);  
  10.         System.out.println(c instanceof Animal);  
  11.         System.out.println(d instanceof Animal);  
  12.         System.out.println(a instanceof Cat);  
  13.           
  14.         A = new Dog("bigyellow","yellow");  
  15.         System.out.println(a.name);  
  16.         System.out.println(a.furname);  
  17.         System.out.println(a instanceof Animal);  
  18.         System.out.println(a instanceof Dog);  
  19.         Dog d1 = (Dog)a;//强制转换符。  
  20.         System.out.println(d1.furColor);   
  21.     }  
  22. }  



内存分析:

        

       父类引用指向子类的对象,只能看到父类的那部分,看不到子类的那部分。a只能看到名字。

       

       强制转换后(向下转型)可以看到全部的内容。

      

       很基础的东西,但很重要。

posted @ 2016-11-23 21:22  天涯海角路  阅读(58)  评论(0)    收藏  举报