zoukankan      html  css  js  c++  java
  • Java---casting(对象转型)

    1.一个基类的引用类型变量可以“指向”其子类对象

    2.一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)

    3.可以使用  引用变量  instanceof  类名  来判断该引用变量所“指向”的对象是否属于该类或该类的子类。

    4.子类对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting).

    public class TestCasting {

    public void f(Animal a) {
     System.out.println("name:" + a.name);
     if (a instanceof Dog) {
      Dog d = (Dog) a;
      System.out.println("furColor:" + d.furColor);
     }
    }//如果传入的参数是Animal类的对象,则只打印name;如果传入的参数是它了子类Dog对象,则还需要打印furColor


    public static void main(String[] args) {
    Animal a=new Animal("animal");
    Dog d=new Dog("Carl", "black");

    System.out.println(d instanceof Animal);//true
    System.out.println(a instanceof Dog);//false
    System.out.println(a instanceof Animal);//true

    Animal a1=new Dog("dog1", "white");
    System.out.println("a1.name:"+a1.name+",a1.furColor:"+a1.furColor);//出错,基类的对象a1不能访问子类新增加的成员furColor
    Dog d1=(Dog)a1;//可以将一个基类对象a1强制转换为子类对象d1
    System.out.println("d1.name:"+d1.name+",d1.furColor:"+d1.furColor);

    TestCasting test=new TestCasting();

     test.f(a);//name:animal

     test.f(d);//name:Carl  furColor:black

    }

    }

    class Animal{
    String name;
    public Animal(String name) {
    this.name=name;
    }
    }

    class Dog extends Animal{
    String furColor;
    public Dog(String name,String furColor) {
    super(name);
    this.furColor=furColor;
    }
    }

  • 相关阅读:
    C#终止线程的方法
    Socket编程(TCP、UDP)
    频率域滤波基础之五(读数字图像处理学习halcon)
    hihoCoder #1127:二分图最小点覆盖和最大独立集
    hihoCoder #1033 : 交错和 (数位Dp)
    HDU-5536 Chip Factory (字典树)
    hihoCoder #1040 (判断是否为矩形)
    hihoCoder:#1079(线段树+离散化)
    HDU-5532 Almost Sorted Array (LIS)
    UVALive-7303 Aquarium (最小生成树)
  • 原文地址:https://www.cnblogs.com/beast-king/p/3913466.html
Copyright © 2011-2022 走看看