上铸和下铸有什么区别?

时间:2014-05-03 14:40:57

标签: primitive-types downcast reference-type upcasting

关于原始数据类型和引用数据类型的上转和下转之间有什么区别。

例如在原始类型中,我们说up-casting从低到高(int到double),而向下铸造从低到高(double到int)。为此我们使用演员操作符。

但是对于引用的数据类型,它与前一种情况相反。例如,动物只包含callme()方法,但是狗包含callme()callme2()方法,那么我们怎么能说动物高于狗。

1 个答案:

答案 0 :(得分:1)

@ user3316746:

让我们使用动物的示例,同时将 cat 投入混合。

Animal 是一个永远不会被实例化的抽象类,用于保存从中继承的类的公共属性和行为。因此,在这种情况下,动物类可能看起来像:

class Animal {

    // Properties (attributes)
    private int age;

    // Methods (behaviours)
    public void eat();
    public void sleep();
}

dog cat 都会继承'age'属性以及'animal'类中定义的'eat'和'sleep'方法,但它们也可以定义特定于该类动物的新特性和新行为。

所以 cat 看起来像:

class Cat extends Animal {

    // Methods (behaviours)
    public void purr();
}

可能看起来像:

class Dog extends Animal {

    // Methods (behaviours)
    public void bark();
}

所以 cat 都是动物的类型,它们都有年龄,它们既可以吃也可以睡觉。但是,只有一只猫可以发出咕噜声,只有一只狗可以吠叫。

狗和猫类比它们继承的基础动物类具有更多的功能,但动物类仍然被认为是更高,因为它定义了猫和狗共有的属性和行为。