• java练习——多态与异常处理


    1.   上面的程序运行结果是什么?

    2.   你如何解释会得到这样的输出?

    parent = chlid;

    所以child中的方法被赋予parent,所以用child方法输出了child的成员变量;

    第一个++算法之后输出的是子类的方法,但是++算法是改变了父类的值,所以输出的是还是子类的对象;

    第二个++算法是强制转化改变了子类的对象值,所以输出了子类的对象。

    3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪些语法特性?

          当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。
     
    发现一个问题:
    class Mammal{
        int a  = 0;
    }
    class Dog extends Mammal {
        int a = 1;
    }
    class Cat extends Mammal{
        int a = 2;
    }
    
    public class TestCast
    {
        public static void main(String args[])
        {
            Mammal m ;
            Dog d=new Dog();
            Cat c=new Cat();
            m=d;
            //d=m;
            d=(Dog)m;
            //d=c;
            //c=(Cat)m;
            System.out.println(d.a);
    
        }
    }

    在进行父类转化为子类的过程中,直接强制转化不能输出想要的结果,系统报错。

    而需要先进行把子类转化为这个父类。

  • 相关阅读:
    模拟hadoop-rpc通信
    IOUtils方式上传下载文件
    HDFS基本操作的API
    HDFS基本命令行操作及上传文件的简单API
    gcj_2016_Round1_B
    hiho_1070_RMQ
    hiho_1068_RMQ_st算法
    hiho_1067_最近公共祖先2
    hiho_1062_最近公共祖先
    hiho_1066_并查集
  • 原文地址:https://www.cnblogs.com/xiaosongbiog/p/4953958.html
Copyright © 2020-2023  润新知