การสืบทอด (Inheritance) ใน JAVA

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderators: mindphp, ผู้ดูแลกระดาน

Post Reply
Grammanano
PHP Full Member
PHP Full Member
Posts: 32
Joined: 02/12/2019 10:16 am

การสืบทอด (Inheritance) ใน JAVA

Post by Grammanano » 04/12/2019 1:48 pm

การสืบทอด ( Inheritance ) ในภาษา JAVA
คือ การที่มีคลาสแม่ ( Superclass ) และคลาสลูก ( Subclass ) โดยคลาสลูกสามารถสืบทอด method และ attribute มาจากคลาสแม่ได้ แต่ไม่สามารถสืบทอดระดับการเข้าถึงที่เป็น private และ constructor นอกจากนี้คลาสลูกเองก็สามารถมี mothod และ attribute นอกเหนือจากคลาสแม่ได้ และคลาสลูกสามารถมีคลาสอื่น ๆ มาสืบทอดต่อได้

***คลาสลูกจะมีลูกกี่คนก็ได้ แต่มีแม่ได้แค่คนเดียว


การสืบทอดนั้น จะต้องมีคำสั่ง extends ในคลาสลูกเพื่อระบุว่าจะสืบทอดมาจากคลาสใด
มีรูปแบบการเขียน คือ

Code: Select all

class Subclass extends Superclass {
	.....
	.....
}
ยกตัวอย่างเช่น

ให้คลาส People.java เป็นคลาสแม่

Code: Select all

public class People {
	private string name;
	public int age;
	
	public void setName (String n) {
		name = n;
	}
	
	public string getName () {
		return name;
	}
}
และคลาส Student.java เป็นคลาสลูก

Code: Select all

public class Student extends People {
	double grade;
	
	public Student () {
		grade = 3.50;
		age = 7;
	}
	
	public void printData () {
		System.out.println ("Grade : "+grade);
		System.out.println ("Age : "+age);
	}
	
	public static void main (String [], args) {
		Student std = new Student ();
		std.setName = ("Yaya");
		system.out.println ("Name : "+std.getName());
		std.printData ();
	}
}
ผลที่ได้
Name : Yaya
Grade : 3.50
Age : 7


จะเห็นได้ว่าคลาส Student ได้ทำการสืบทอดมาจากคลาส People โดยสามารถดึงตัวแปร age มาได้และยังสร้างตัวแปร grade เพิ่มเป็นของตัวเอง แต่ไม่สามารถดึงตัวแปร name มาได้ เพราะเป็น private แต่คลาส Student สามารถเรียกใช้ method setName() และ getName() ได้เหมือนเป็นของคลาสตัวเอง เพราะเป็นแบบ public


การ Override Method
คือการใส่ @Override หน้า method ในคลาสลูก แล้วจะทำให้ method นั้นละเว้นสิ่งที่สืบทอดมาจากคลาสแม่ทันที ใช้เพื่อป้องกันการสร้าง method ที่ใช้ชื่อ และ attribute ซ้ำกับคลาสแม่



บทความที่เกี่ยวข้อง
จาวา OOP การเขียนโปรแกรมแบบสืบทอด โดยแสดงคลาสแบบ abstract

Post Reply

Return to “Share Knowledge”

Users browsing this forum: No registered users and 10 guests