嗨,我只是想确定我有这些概念的权利。过载在java意味着你可以有一个构造或方法不同数量的参数或不同的数据类型。i。e

public void setValue(){
   this.value = 0;
}
public void setValue(int v){
   this.value = v;
}

这个怎么样的方法?将它仍被认为负载过重,因为这是返回的一个不同的数据类型?

public int setValue(){
   return this.value;
}

第二个问题是:什么是压倒一切的 在java?它涉及到继承。让我有以下几种:

public class Vehicle{
  double basePrice = 20000;
  //constructor defined
  public double getPrice(){
     return basePrice;
   }
}

public class Truck extends Vehicle{
  double truckPrice = 14000;
  //constructor defined
  public double getPrice(){
     return truckPrice;
   }
}

所以现在让我们说,我有以下

Truck truck = new Truck();

如果我呼叫

truck.super.getPrice()

这将返回的价格从该车辆的类,20,000

如果我呼叫

truck.getPrice()

这将返回的价格的卡车类,14 000名

是我的知识,纠正这两个问题?

有帮助吗?

解决方案

你基本上都是正确的。重载是具有多种方法在一个单一的类,该方法具有相同的名称。然而,返回的价值是不是看作一部分 签名 该方法。因此,不能超载方法通过仅仅改变返回值。你不能有下列代码,从您的例子:

public void setValue() {
   this.value = 0;
}

public int setValue() {
   return this.value;
}

这将无法编译。

作为抢劫确定,我相信你的意思 压倒一切的, 和你有正确的。注意到压倒一切,你不能改变返回的类型。作为Java5,你可以回返的一个源类型的什么基类方法返回。前Java5,它必须是相同的类型。也就是说,你无法做下面直到Java5和后来:

public class AnimalNoise {}
public class Miaw extends AnimalNoise {}

public class Animal {
    public AnimalNoise makeNoise() {
        return new AnimalNoise();
    }
}

public class Cat extends Animal {
    public Miaw makeNoise() {
        return new Miaw ();
    }
}

然而,即使在Java5和后来,你 不能 做到以下几点:

public class Animal {
    public String makeNoise() {
        return "silence";
    }
}

public class Cat extends Animal {
    public Miaw makeNoise() {
        return new Miaw ();
    }
}
public class Miaw {}

最后,一个很大的差超载和压倒一切的,往往是被忽略的是,重载决定在汇编时间和压倒一切的决定是在运行时间。这种捕捞许多人惊讶的是,当他们希望负载过重要决定,在运行时间。

其他提示

正确的;重载是提供多个签名相同的方法。

压倒一切,它是什么我觉得你的意思是"复盖"的行为提供不同的执行情况的一个方法继承了一个基本类型,并且是基本点的多态性的继承,即

public class Bicycle implements Vehicle {
    public void drive() { ... }
}

public class Motorcycle extends Bicycle {
    public void drive() {
        // Do motorcycle-specific driving here, overriding Bicycle.drive()
        // (we can still call the base method if it's useful to us here)
    }
}

你有什么描述的是正确的。

更多的澄清,看看多态性的概念。维基百科有一个很好的文章

http://en.wikipedia.org/wiki/Polymorphism#Computing

http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top