【问题标题】:What is the difference between the up-casting and down-casting?上铸和下铸有什么区别?
【发布时间】:2014-06-20 04:23:27
【问题描述】:

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

例如,在原始类型中,我们说向上转换是从低到高(int 到 double),向下转换是从高到低(double 到 int)。为此,我们使用强制转换运算符。

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

【问题讨论】:

标签: primitive-types downcast reference-type upcasting


【解决方案1】:

@user3316746:

让我们使用您的 animaldog 示例,但也可以将 cat 加入其中。

Animal 是一个永远不会被实例化的抽象类,旨在保存继承自它的类的通用属性和行为。因此,在这种情况下,动物类可能如下所示:

class Animal {

    // Properties (attributes)
    private int age;

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

dogcat 都继承 'age' 属性以及 'animal' 类中定义的 'eat' 和 'sleep' 方法,但它们也可以定义这种动物特有的新特性和新行为。

所以 cat 可能看起来像:

class Cat extends Animal {

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

可能看起来像:

class Dog extends Animal {

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

所以都是动物的种类,都有年龄,能吃能睡。但是,只有猫会发出呼噜声,只有狗会吠叫。

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

【讨论】:

  • 我不清楚这一点。我需要原始类型和引用类型的不同示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 2012-06-01
  • 2013-05-27
  • 1970-01-01
相关资源
最近更新 更多