Trong java chúng tôi không thể ghi đè lên một phương pháp cuối cùng nhưng nó có thể quá tải?là nó có thể quá tải một phương pháp cuối cùng
Trả lời
Có, quá tải phương pháp cuối cùng là hoàn toàn hợp pháp.
Ví dụ:
public final void doStuff(int x) { ... }
public final void doStuff(double x) { ... }
Có thể.
Bạn có thể kiểm tra loại điều này bằng cách viết các lớp Java nhỏ.
class TestClass{
final public void testMethod(){
}
final public void testMethod(int i){
}
}
YES, tại sao không? Nó là hợp pháp như quá tải phương pháp không cuối cùng.
Nhưng bạn không thể ghi đè chúng (bạn đã biết).
Ví dụ:
public final void func(String x) {/* code */}
public final void func(double x) { /* more code */ }
public final void func(int x) { /* yeah I have still more code */ }
Tại sao một phiếu bầu xuống? –
có quá tải phương pháp cuối cùng là có thể trong java.As phương thức bị hạn chế không để ghi đè lên các phương pháp.
trong khi danh sách đối số quá tải phải là loại phương pháp quá tải khác nhau.
Có, rất nhiều khả năng.
Một chương trình nhỏ để chứng minh điều đó:
class A{
final void foo(){ System.out.println("foo ver 1 from class A"); }
final void foo(int a){ System.out.println("foo ver 2 from class A"); }
}
class B extends A{
final void foo(long l){ System.out.println("foo ver 3 from class B"); }
// final void foo(){ System.out.println("foo ver 1 from class A"); } NOT ALLOWED
}
public class Test {
public static void main(String [] args){
B obj = new B();
obj.foo();
obj.foo(1);
obj.foo(1L);
}
}
Output:
foo ver 1 from class A foo ver 2 from class A foo ver 3 from class B
Vâng, nhưng lưu ý rằng công văn năng động có thể không làm những gì bạn đang mong đợi! Nhanh dụ:
class Base {
public final void doSomething(Object o) {
System.out.println("Object");
}
}
class Derived extends Base {
public void doSomething(Integer i) {
System.out.println("Int");
}
}
public static void main(String[] args) {
Base b = new Base();
Base d = new Derived();
b.doSomething(new Integer(0));
d.doSomething(new Integer(0));
}
này sẽ in:
Object Object
Có, bởi vì cả hai đối tượng được tạo trong phương thức chính đều có kiểu dữ liệu cha mẹ cao nhất là 'Base', cả hai đều sẽ in" * Object * ". Vì cá thể 'Derived' có mối quan hệ" * là a * "với lớp' Base', đối tượng này có thể được đưa vào 'Derived' để gọi phương thức in" * Int * ". –
@IanCampbell Chính xác '((Nguồn gốc) d) .doMột cái gì đó (1); ' –
Công văn động sẽ xảy ra khi bạn ghi đè lên các phương thức, không phải với quá tải. – sharhp
vâng chúng ta có thể quá tải các phương pháp chính thức
Có:
class a {
final void method1(int a,int b) {
System.out.println("super class");
int d = a+ b;
System.out.println(d);
}
}
class b extends a{
final void method1(int a) {
System.out.println("sub class");
System.out.println(a);
}
}
public class c {
public static void main(String ar[]) {
b m = new b();
m.method1(10);
}
}
Bạn nên định dạng mã của bạn và thêm một cái gì đó để giải thích câu trả lời của bạn. – Jonathan
- 1. Phương pháp cuối cùng có thể sử dụng Powermockito trong lớp bê tông không cuối cùng?
- 2. Phương pháp không phải cuối cùng trong lớp cuối cùng
- 3. Quá tải các phương pháp chung
- 4. OpCodes có thể cho lệnh cuối cùng của một phương thức là gì?
- 5. Phương pháp quá tải và chọn loại cụ thể nhất
- 6. Phương pháp có thể là một trang trí của một phương pháp khác của cùng một lớp không?
- 7. Lựa chọn phương pháp có quá tải và ghi đè
- 8. Java phương pháp quá tải - nhập nhằng
- 9. Generics vs Phương pháp quá tải
- 10. Phương pháp quá tải và đa hình
- 11. EL có hỗ trợ các phương pháp quá tải không?
- 12. Phương pháp nạp chồng quá tải
- 13. scala - Tôi có thể quá tải các phương pháp đã kết hôn không?
- 14. phương pháp quá tải trong python
- 15. Java phương pháp quá tải lựa chọn
- 16. Phương pháp quá tải: phễu cuộc gọi đến lớp có nguồn gốc lý luận quá tải
- 17. Phương pháp cuối cùng có ngăn Hibernate tạo proxy cho thực thể như vậy không?
- 18. quá tải của Math.sqrt: phương pháp quá tải dường như để che giấu bản gốc một
- 19. C# không thể gọi quá tải phương pháp phi generic từ phương pháp chung
- 20. Không ghi đè một phương pháp ảo không phải là const ẩn một quá tải const?
- 21. phương pháp Tại sao quá tải có ưu tiên thấp hơn so với phương pháp dụ
- 22. Làm thế nào để quá tải một phương pháp ảo khác với phương pháp phi ảo?
- 23. Phương thức web có thể bị quá tải không?
- 24. Java Interface: Kế thừa, Overriding, và quá tải phương pháp
- 25. Quá tải các phương pháp điều khiển asp.net MVC với cùng động từ?
- 26. biến cuối cùng trong phương pháp trong Java
- 27. Có thể quá tải Clojure đa phương pháp trên tinh thần không?
- 28. là nó có thể ghi đè lên một phương pháp trong thời gian chạy?
- 29. Tái sử dụng Javadoc và các phương pháp quá tải
- 30. Đang chờ trên dòng phương pháp cuối cùng
Khi bạn đã thử nó những gì đã xảy ra? –