Kế thừa trong lập trình hướng đối tượng

Lập trình Java cơ bản đến hướng đối tượng

5.0 (6 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 00:50 26-07-2020 41.001 lượt xem 5 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Kế thừa trong lập trình hướng đối tượng

Dẫn nhập

Trong bài trước, Kteam đã giải thích các bạn từ khóa THIS. Tiếp tục ở bài này, chúng ta sẽ tìm hiểu tính Kế thừa trong lập trình hướng đối tượng.


Nội dung

Để đọc hiểu bài này, tốt nhất các bạn nên có kiến thức cơ bản về các phần sau:

Bài này chúng ta sẽ tìm hiểu những vấn đề sau:

  • Khái niệm kế thừa
  • Khai báo và sử dụng kế thừa
  • Chú ý về kế thừa

Khái niệm kế thừa

Kế thừa có nghĩa là thừa hưởng lại, ví dụ như tài sản của ba mẹ sẽ được giao lại cho con cái.

Kế thừa trong lập trình (Inheritance) có nghĩa là một lớp sẽ thừa hưởng lại những thuộc tính, phương thức từ lớp khác.

Việc sử dụng kế thừa nhằm tái sử dụng code đã viết trước đó, thuận tiện trong việc bảo trì và nâng cấp chương trình.


Khai báo và sử dụng kế thừa

Cú pháp:

class <tên lớp con> extends <tên lớp cha> {

}

Ví dụ: ta có 2 lớp PersonStudent như sau

Kế thừa trong lập trình hướng đối tượng

Ta thấy 2 lớp Person Student có chung thuộc tính và phương thức. Ta sẽ để nguyên code ở lớp Person lại:

public class Person {
	
	public String name;
	public int age;
	public float height;
	
	public Person(String name, int age, float height) {
		this.name = name;
		this.age = age;
		this.height = height;
	}
	
	public void getInfo() {
		System.out.println("Name:"+this.name);
		System.out.println("Age:"+this.age);
		System.out.println("Height:"+this.height);
	}	
}

Bây giờ ta chỉ cần cho lớp Student kế thừa Person như sau:

public class Student extends Person{

	public Student(String name, int age, float height) {
		super(name, age, height);
	}	
}

Trong phương thức khởi tạo Student, ta sẽ dùng từ khóa super để cho lớp con truy cập các những thứ liên quan đến lớp cha. Như ví dụ trên thì ta dùng super() để gọi phương thức khởi tạo lớp cha.

Tiếp theo, ta thử khởi tạo đối tượng Student và gọi phương thức getInfo():

public class HelloWorld {

	public static void main(String[] args) {
		Student a = new Student("Chau", 21, 1.7f);
		a.getInfo();
	}
}

Theo kết quả, đối tượng a sử dụng được phương thức getInfo() từ lớp cha

Kế thừa trong lập trình hướng đối tượng


Chú ý về kế thừa

Slogan đặc trưng kế thừa: “Cha có thì con có, con có chưa chắc cha đã có”

Tính chất kế thừa các ngôn ngữ lập trình hướng đối tượng đa số đều tương đồng với nhau về tính chất. Có thể các bạn không nhớ khái niệm và cú pháp, nhưng chỉ cần hiểu câu nói trên là bạn đã hiểu về kế thừa.

Ví dụ: Như ví dụ trước thì lớp Student kế thừa Person, ngoài những thuộc tính kế thừa ra, ta muốn thêm thuộc tính universityName cho Student

public class Student extends Person {
	
	public String universityName;

	public Student(String name, int age, float height, String universityName) {
		super(name, age, height);
		this.universityName = universityName;
	}	
}

Như vậy theo đúng tính chất: lớp cha Person có name, age, height thì lớp con Student có. Lớp con Student có universityName thì lớp cha Person không có.


Tận dụng từ khóa super để bảo trì và nâng cấp code

Từ khóa super mục đích chính truy cập những phương thức của lớp cha. Trong việc phát triển phần mềm, ta cần nâng cấp chương trình. Việc tận dụng từ khóa super sẽ giúp ta vừa tận dụng những dòng code trước đó và viết tiếp code mới.

Ví dụ: ta thấy phương thức getInfo() chỉ trả về thông tin name, age, height. Bây giờ, ta sẽ nâng cấp phương thức có thể trả về thông tin universityName ở lớp Student

public class Student extends Person {
	
	public String universityName;

	public Student(String name, int age, float height, String universityName) {
		super(name, age, height);
		this.universityName = universityName;
	}
	
	public void getInfo() {
		super.getInfo();
		System.out.println("University Name:"+this.universityName);
	}
	
}

Ta thử khởi tạo để kiểm tra:

public class HelloWorld {

	public static void main(String[] args) {
		Student a = new Student("Chau", 21, 1.7f, "UTE");
		a.getInfo();
	}
}

Kế thừa trong lập trình hướng đối tượng

Flow của chương trình có thể hiểu như sau:

Kế thừa trong lập trình hướng đối tượng


Kết

Như vậy chúng ta đã tìm hiểu kế thừa trong lập trình hướng đối tượng

Ở bài sau, Kteam sẽ giới thiệu đến bạn về SETTER VÀ GETTER TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Kế thừa trong lập trình hướng đối tượng dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Khóa học

Lập trình Java cơ bản đến hướng đối tượng

Với mục đích giới thiệu đến mọi người về Ngôn ngữ Java -  một ngôn ngữ lập trình khá mới mẻ so với C, C++, Java, PHP ở Việt Nam.

Thông qua khóa học LẬP TRÌNH JAVA CƠ BẢN ĐẾN HƯỚNG ĐỐI TƯỢNG, Kteam sẽ hướng dẫn các bạn kiến thức cơ bản của Java. Để từ đó, có được nền tảng cho phép bạn tiếp tục tìm hiểu những kiến thức tuyệt vời khác của Java hoặc là một ngôn ngữ khác.

Cụ thể trong khóa học này, Kteam sẽ giới thiệu với các bạn Java ở phiên bản Java 8

Đánh giá

Vo Tan Duc đã đánh giá 10:05 31-12-2022

Cái này sử dụng nhiều lắm nha!

dinhthongkm đã đánh giá 11:05 11-07-2022

Nahoshi đã đánh giá 14:20 30-07-2021

con ông hàm xóm......kkk

phuocphan2411 đã đánh giá 14:37 08-05-2020

thaidat01222 đã đánh giá 10:27 01-03-2020

Hay quá anh!

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
haihungnguyen đã bình luận 23:40 13-04-2022

1 class có thể kế thừa nhiều hơn 1 class khác ko ạ 

 

haihungnguyen đã bình luận 23:24 13-04-2022

1 class có thể kế thừa nhiều hơn 1 class khác ko ạ 

 

dominhhieua1pro đã bình luận 13:43 02-07-2021

ad không nói về @Override ạ

Không có video.