zoukankan      html  css  js  c++  java
  • 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);
    
        }
    }

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

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

  • 相关阅读:
    vue-cli与后台数据交互增删改查
    echart地图下钻
    Vue中data重置问题
    页面滚动tab监听
    less笔记
    bootstrap-table 行内编辑
    bootstrap-table固定表头固定列
    微信分享配置(js-sdk)
    npm查看全局安装过的包
    页面固定定位超出一屏
  • 原文地址:https://www.cnblogs.com/xiaosongbiog/p/4953958.html
Copyright © 2011-2022 走看看