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

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

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

Grammanano
PHP Sr. Member
PHP Sr. Member
โพสต์: 60
ลงทะเบียนเมื่อ: 02/12/2019 10:16 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย Grammanano »

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

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


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

โค้ด: เลือกทั้งหมด

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

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

โค้ด: เลือกทั้งหมด

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

โค้ด: เลือกทั้งหมด

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
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 66