Một classs extends từ class khác được gọi là subclass
Một class mà được class khác extends được gọi là superclass
Superclass của tất cả các class trong java là java.lang.Object (mặc định, dù không dùng từ khoá extends)
SubClass cũng có kiểu là superclass, instance của subclass được dùng ở mọi nơi mà instance của super class có thể sử dụng.
Tất cả fields, method, nested types của superclass có thể được sử dụng cho subclass
Contructors không được extends, nhưng trong contructors của subclass phải gọi contructors của superclass (mặc định nếu không gọi thì contructors không parammeter ở superclass sẽ được gọi)
Không thể gọi khối khởi tạo của superclass từ subclass
Rules về extends
Subclass không extends các member private của superclass
Subclass extends toàn bộ các member public và protected của subclass, không quan trọng package là gì
Trường hợp subclass cùng package với superclass thì sẽ extends thêm các member không có modifier (package-private)
Nếu muốn override method từ supercass thì phải cùng là static hoặc non-static
Có thể đặt tên field cùng tên với super class, không phân biệt static hay non-static
Rules về extends Fields
Có thể sử dụng trực tiếp như các field khác của subclass
Ẩn bởi subclass – khai báo tên field giống với tên trong superclass (không nên dùng)
Bổ sung – subclass có thể khai báo các field không có tên trong superclass
Rules về extends Methods
Sử dụng trực tiếp
Overridden – khai báo method có cùng tên, kiểu return với superclass
Ẩn bởi superclass – khai báo method static có cùng tên và kiểu return với superclass
Bổ sung – subclass có thể khai báo các method không có tên trong superclass