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);
    
        }
    }

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

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

  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/xiaosongbiog/p/4953958.html
Copyright © 2011-2022 走看看