คือ การที่มีคลาสแม่ ( 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;
}
}
โค้ด: เลือกทั้งหมด
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