import swing._
object PeerTest extends SimpleSwingApplication {
def top = new MainFrame {
val p = peer.getMousePosition
}
}
choTại sao tham chiếu này không rõ ràng?
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
nhưng thêm loại
val p: Point = peer.getMousePosition
làm cho nó ok. Tại sao?
chỉnh sửa: gây ra vấn đề:
class A {
def value() = 123
}
class B extends A {
def value(b: Boolean) = 42
}
object Main extends App {
println ((new B).value)
}
không gây ra vấn đề:
class A {
def value() = 123
def value(b: Boolean) = 42
}
class B extends A {}
object Main extends App {
println ((new B).value)
}
Vì vậy, tôi nghĩ câu trả lời có giải thích lý do tại sao nó chỉ xảy ra khi các phương pháp này trong các lớp khác nhau .
Vì vậy, chúng tôi có thể ngắt mã của mọi người nếu chúng tôi quyết định thêm phương thức quá tải vào lớp ... điều này dường như không tốt lắm. Tôi nghĩ rằng đặt một '_' sau khi phương pháp là cách để làm cho nó một chức năng được áp dụng một phần. –
@Luigi Có nhiều cách để phá vỡ mã của mọi người bằng cách thêm quá tải, đây chỉ là một cách khác. –
http://stackoverflow.com/questions/2510108/why-avoid-method-overloading – retronym