import swing._
object PeerTest extends SimpleSwingApplication {
def top = new MainFrame {
val p = peer.getMousePosition
}
}
error: ambiguous reference to overloaded definition,
both method getMousePosition in class Container of type (x$1: Boolean)java.awt.Point
and method getMousePosition in class Component of type()java.awt.Point
match expected type ?
val p = peer.getMousePosition
verir ama tip
val p: Point = peer.getMousePosition
ekleyerek Tamam yapar. Niye ya?
düzenleme: neden sorun:
class A {
def value() = 123
}
class B extends A {
def value(b: Boolean) = 42
}
object Main extends App {
println ((new B).value)
}
neden olmaz sorun: Yani
class A {
def value() = 123
def value(b: Boolean) = 42
}
class B extends A {}
object Main extends App {
println ((new B).value)
}
Cevabın yöntemleri farklı sınıflara olduğunda yalnızca oluşur niçin olduğunu düşünüyorum .
Bir sınıfa aşırı yükleme yöntemleri eklemeye karar verirsek, insanların kodunu kırabiliriz ... Bu çok iyi görünmüyor. Yöntemi kısmen uygulanmış bir işlev haline getirmenin yolu bir '' 'koymayı düşündüm. –
@Luigi Aşırı yük ekleyerek insanların kodunu kırmanın birçok yolu var, bu sadece bir yol. –
http://stackoverflow.com/questions/2510108/why-avoid-method-overloading – retronym