java对象转型实例分析

 更新时间:2014年10月05日 12:05:42   投稿:shichen2014  
这篇文章主要介绍了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程序设计有所帮助

相关文章

  • Java文件(io)编程之文件字符流使用方法详解

    Java文件(io)编程之文件字符流使用方法详解

    这篇文章主要为大家详细介绍了Java文件(io)编程之文件字符流使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Java如何替换RequestBody和RequestParam参数的属性

    Java如何替换RequestBody和RequestParam参数的属性

    近期由于接手的老项目中存在所有接口中新增一个加密串来给接口做一个加密效果,所以就研究了一下Http请求链路,发现可以通过 javax.servlet.Filter去实现,这篇文章主要介绍了Java替换RequestBody和RequestParam参数的属性,需要的朋友可以参考下
    2023-10-10
  • Java并发编程之threadLocal

    Java并发编程之threadLocal

    ThreadLocal是JDK包提供的,它提供了线程本地变量,也就是说如果创建了一个ThreadLocal变量,需要的朋友可以参考一下哟
    2021-09-09
  • MyBatis Plus之实现动态排序方式

    MyBatis Plus之实现动态排序方式

    这篇文章主要介绍了MyBatis Plus之实现动态排序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Spring AOP 实现自定义注解的示例

    Spring AOP 实现自定义注解的示例

    这篇文章主要介绍了Spring AOP 实现自定义注解的示例,帮助大家更好的理解和学习使用spring框架,感兴趣的朋友可以了解下
    2021-03-03
  • MyBatis中传入参数parameterType类型详解

    MyBatis中传入参数parameterType类型详解

    这篇文章主要给大家介绍了关于MyBatis中传入参数parameterType类型的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2018-04-04
  • IOC 容器启动和Bean实例化两个阶段详解

    IOC 容器启动和Bean实例化两个阶段详解

    这篇文章主要为大家介绍了IOC 容器启动和Bean实例化两个阶段详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • java 二维码的生成与解析示例代码

    java 二维码的生成与解析示例代码

    本文主要介绍java二维码的生成与解析,这里提供示例代码以便大家参考和理解,希望能帮助开发Java 二维码的朋友
    2016-08-08
  • 如果淘宝的七天自动确认收货让你设计你用Java怎么实现

    如果淘宝的七天自动确认收货让你设计你用Java怎么实现

    在面试的时候如果面试官问淘宝的七天自动确认收货让你设计,你会怎么具体实现呢?跟着小编看一下下边的实现过程,对大家的学习或工作具有一定的参考借鉴价值
    2021-09-09
  • Spring框架AOP基础之代理模式详解

    Spring框架AOP基础之代理模式详解

    代理模式(Proxy Parttern)为一个对象提供一个替身,来控制这个对象的访问,即通过代理对象来访问目标对象。本文将通过示例详细讲解一下这个模式,需要的可以参考一下
    2022-11-11

最新评论