java中对象的类型转换

来源:互联网 发布:淘宝直通车关键词查询 编辑:程序博客网 时间:2024/05/20 01:36

                           java中对象的类型转换

1.向类型转换

             在java中对象的向上类型转换是安全的。

        具体解释请参考以下代码及其注释:

public class ExampleTest {public static void main(String[] args) {Animal animal=new Dog();   //向上类型转化,把Dog类的对象转换成了Animal类的对象,方法不会丢失        animal.eat();          //调用Dog的eat方法      }}class Animal{    //创建一个Animal类public void eat(){  //定义一个动物eat的方法,不具体指定哪一种动物,便于程序扩展}}class Dog extends Animal{//创建一个Dog类,继承自Animal父类public void eat(){    //重写父类的eat方法System.out.println("啃骨头");}}class Cat extends Animal{//创建一个Cat类,继承自Animal父类public void eat(){    //重写父类的eat方法System.out.println("吃鱼肉");}}

输出结果:啃骨头



2.向类型转换

              在java中对象的向上类型转换是不安全的。因为会丢失子类中的方法!,我画一幅图说明以下就懂了。

  

       因为子类是继承自父类的,所以父类有的方法子类肯定有,所以向上类型转换是安全的。而子类中有的方法父类不一定有,所以向下类型转换是不安全的

        具体解释请参考以下代码及其注释:

public class ExampleTest {public static void main(String[] args) {Dog animal=  new Animal();//向下类型转化,把Animal类的对象转换成了DOg类的对象,不安全        animal.eat();          //调用Dog的eat方法      }}
Dog类和Cat类的代码和上面一样

 避免向下类型转换出现错误的方法:

public class ExampleTest {public static void main(String[] args) {Dog animal= new Animal();//向下类型转化,把Animal类的对象转换成了DOg类的对象,不安全if(animal instanceof Dog)                animal.eat();          //调用Dog的eat方法      }    }

Dog类和Cat类的代码和上面一样


       java中instanceof 关键字是用来判断对象的类型是不和后面类是不是匹配,如果匹配返回true,否则返回false。用这个关键字可以限制类

型转换时出现错误


                                             
0 0