01/10/2018, 11:51
Tại sao không được override phương thưc static
```
package overring;
class CAnimal{
public static void doSomething(){
System.out.println("Animal");
}
}
class CElephant extends CAnimal{
public static void doSomething(){
System.out.println("Elephant");
}
}
public class Redefining_Method {
public static void main(String [] args){
CAnimal obj = new CElephant();
obj.doSomething();
}
}```
Khi chạy đoạn code này thì obj.doSomething() in ra " Animal " , tác động của method dùng static là ntn??
Bài liên quan
Why do we say that a static method in Java is not a virtual method?
Do phương thức tĩnh không bị “trói” vào đối tượng (runtime) mà được kích qua kiểu reference (compile-time).
đã gọi là static ( tĩnh) thì sẽ không động ( dynamic) , việc gọi đến 1 method tĩnh luôn được xác định ngay tại thời điểm biên dịch ( compile) , vì vậy sẽ không thể xảy ra tính đa hình với method tĩnh được , 1 cái nữa là các thành viên tĩnh thì được xem như là thành viên của lớp chứ không phải là của đối tượng nên khi truy cập vào nó ta nên dùng chính lớp đó để truy cập (ở các ngôn ngữ thông dịch nó không cho đối tượng truy cập trực tiếp vào thành viên của lớp)
Mình hiểu rồi,thật lòng cảm ơn bạn