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??

rogp10 viết 13:54 ngày 01/10/2018
stackoverflow.com
Lion

Why do we say that a static method in Java is not a virtual method?

java
asked by Lion on 02:37PM - 11 Nov 11

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).

Cong 5 viết 14:06 ngày 01/10/2018

đã 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)

Làm lại từ đầu viết 13:51 ngày 01/10/2018

Mình hiểu rồi,thật lòng cảm ơn bạn

Bài liên quan
0