java对象转型实例分析
本文实例讲述了java对象转型的概念,分享给大家供大家参考。具体方法如下:
对象转型(casting)注意事项如下:
1、一个基类的引用类型变量可以“指向”其子类的对象。
2、一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
3、可以使用 引用变量 instanceof 类名 来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。
4、子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之成为向下转型(downcasting)。
具体实现代码如下:
public class TestCasting{
public static void main(String args[]){
Animal animal = new Animal("name");
Cat cat = new Cat("catName","blueColor");
Dog dog = new Dog("dogName","yellowColor");
System.out.println(animal instanceof Animal);
System.out.println(cat instanceof Animal);
System.out.println(dog instanceof Animal);
//System.out.println(animal instanceof cat); //error
animal = new Dog("dogAnimal","dogColor");
System.out.println(animal.name);
//System.out.println(animal.forColor); //error
System.out.println(animal instanceof Animal);
System.out.println(animal instanceof Dog);
Dog d1 = (Dog)animal;
System.out.println(d1.forColor);
}
}
class Animal{
public String name;
public Animal(String name){
this.name = name;
}
}
class Cat extends Animal{
public String eyeColor;
public Cat(String name, String eyeColor){
super(name);
this.eyeColor = eyeColor;
}
}
class Dog extends Animal{
public String forColor;
public Dog(String name, String forColor){
super(name);
this.forColor = forColor;
}
}
运行结果如下图所示:

希望本文所述对大家的Java程序设计有所帮助
相关文章
解析Idea为什么不推荐使用@Autowired进行Field注入
这篇文章主要介绍了Idea不推荐使用@Autowired进行Field注入的原因,网上文章大部分都是介绍两者的区别,没有提到为什么,当时想了好久想出了可能的原因,今天来总结一下2022-05-05
基于Spring Web Jackson对RequestBody反序列化失败的解决
这篇文章主要介绍了基于Spring Web Jackson对RequestBody反序列化失败的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-09-09
Spring中的@EnableScheduling定时任务注解
这篇文章主要介绍了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一个注解,用于启用 Spring 的定时任务功能,通过使用这个注解,可以在 Spring 应用程序中创建定时任务,需要的朋友可以参考下2024-01-01
SpringBoot使用Sa-Token实现账号封禁、分类封禁、阶梯封禁的示例代码
本文主要介绍了SpringBoot使用Sa-Token实现账号封禁、分类封禁、阶梯封禁的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-07-07
Spring SpringMVC在启动完成后执行方法源码解析
这篇文章主要介绍了SpringMVC在启动完成后执行方法源码解析,还是非常不错的,在这里分享给大家,需要的朋友可以参考下。2017-09-09


最新评论