疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java之对象转型


 

   

  public class TestCasting2{

  public static void main(String args[]){

  TestCasting2 test2= new TestCasting2();

  Animal a = new Animal("animalName");

  Dog d = new Dog("dogName","dogColor");

  Cat c = new Cat("catName","catColor");

  test2.f(a); test2.f(d); test2.f(c);

  }

  public void f(Animal a){ //父类引用型参数,达到了面向对象苦苦追求的可复用性,

  多种类型的对象,共同使用一个方法

  System.out.println(a.name);

  if(a instanceof Dog){

  Dog d2 = (Dog)a; //强制转换,然后就可以使用子类当中的属性了

  System.out.println(d2.folorColor);

  }else if(a instanceof Cat){

  Cat c2 = (Cat)a;

  System.out.println(c2.eyesColor);

  } //这里有过还有一个鸟对象,只需要加一个if判断语句就ok

  了,不需要重写一个方法public void f2(Bird bird){}

  }

  }

  class Animal{

  public String name;

  public Animal(String name){

  this.name = name;

  }

  }

  class Dog extends Animal{

  public String folorColor;

  public Dog(String name,String folorColor){

  super(name);

  this.folorColor = folorColor;

  }

  }

  class Cat extends Animal{

  public String eyesColor;

  public Cat(String name,String eyesColor){

  super(name);

  this.eyesColor = eyesColor;

  }

  }

  程序运行结果:

  aninalNane

  dogNane

  dogColor

  catName

  catColor

  总结:

  这边文章的基本记录就是:我们创建一个方法,方法的参数是父类的引用。而我们实际当中传的是子类的对象,这样我们就可以多个对象同时使用这一个方法了。然后我们在方法中通过强制类型转换, 调用各个对象的各个属性。通过这种对象的向上转型方法可以使我们的代码可复用性提高一些,但并不是可复用性达到了最好,通过对象转型,达到了面向对象的可复用性。就好比:我要盖好一座大楼,然后要在大楼边上加一个厨房,我们只需直接盖厨房就好了。而不是将楼房的主题建筑拆掉,然后重新盖一次楼房。