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;
}
}

Java---casting(对象转型),布布扣,bubuko.com

时间: 2024-08-07 19:43:31

Java---casting(对象转型)的相关文章

java之对象转型

对象转型(casting) 1.一个基类的引用类型变量可以“指向”其子类的对象. 2.一个基类的引用不可以访问其子类对象新增加的成员(属性和方法). 3.可以使用 引用变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类. 4.子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之成为向下转型(downcasting). public class TestCasting{ public static void main(String a

java之对象转型2

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","

Java 对象转型、动态绑定、接口

一.对象转型  Casting //对象转型Casting class Animal{ public String name; Animal(String name){ this.name = name; } } class Cat extends Animal{ public String eyesColor; Cat(String n, String c){ super(n); eyesColor = c; } } class Dog extends Animal{ public Strin

java入门之——对象转型

对象的类型转换是我们在编程的时候经常会遇到的,java平台也是如此,比如一些基本类型的数据转型和复合数据的转换. 举例 java语言中主要分为向上转型和向下转型,如何来了解和掌握这两者转型的关系呢?首先我们先来举个例子,相信大家看完以后就会明白了. 比如说我们的现实的世界中有动物.猫科动物.老虎这三样东西,它们三者都有什么样的关系呢?如果用面向对象的思维来考虑的话,老虎是子类,猫科动物是老虎的父类.老虎对象就是猫科动物的对象,在这里要特别说明的一点就是:老虎是猫科动物的一个对象,那么猫科动物所具

java基础学习之对象转型

对象转型(casting): 1)一个基类的引用类型变量可以指向其子类的对象 2)一个基类的引用不可以访问其子类对象新增加的成员(属性和方法) 3)可以使用引用变量instanceof类名,来判断该引用型变量所指向的对象是否属于该类或该类的子类 4)子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting) package javastudy.summary; /** * 父类Animal * @author gacl * */ class

Java——对象转型

[对象转型] [程序]

[Java][视频] 笔记-对象转型 和 动态绑定(多态)

一.对象转型 1 一个基类的应用类型变量可以“指向”其子类的对象. 2 一个基类的引用不可以访问其子类对象新增加的成员(属性和方法). 下面的例子可以好好研究一下: 二 .动态绑定(多态):polymoph 动态绑定(多态)是指“在执行期间”(而非编译期)判断所引用对象的实际类型,根据其实际类型调用其相应的方法. 多态存在有三个必要条件: 1 要有继承 2 要有重写 3 父类引用指向本类对象 当你调用父类里面被重写的方法时,实际中new的是哪个子类对象,调用的就是哪个子类对象的方法. 如下面的例

Java Class对象

Java Class对象 @author ixenos 关键字:RTTI.动态绑定.动态加载.获得Class引用.泛型Class引用.newInstance的坑 RTTI和动态绑定 RTTI即运行时类型识别 Run-Time Type Identification 或 Run-Time Type Information 例如,当把Shape对象放入List<Shape>的数组时会向上转型,但在向上转型为Shape的时候也会丢失Shape对象的具体类型,对于数组而言,他们只是Shape对象.从L

Java面向对象-对象的多态性

Java面向对象-对象的多态性 Java中的多态性表现: 1,方法的重载和重写(覆盖): 2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现: 我们先搞个父类Animal: 1 package com.java1234.chap03.sec13; 2 3 public class Animal { 4 5 public void say(){ 6 System.out.println("我是一个动物"); 7 } 8 } 再搞两个子类,分别是Dog和Cat类,

Java多态对象的类型转换和动态绑定

Java多态对象的类型转换这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. 在继承链中,我们将子类向父类转换称为"向上转型",将父类向子类转换称为"向下转型". 很多时候,我们会将变量定义为父类的类型,却引用子类的对象,这个过程就是向上转型.程序运行时通过动态绑定来实现对子类方法的调用,也就是多态性. 然而有些时候为