1 Inheritance อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
Advertisements

วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส
AVL Tree.
การสืบค้นข้อมูลจาก Web OPAC
Week 6 ประกาศค่าตัวแปร.
05_3_Constructor.
Properties ของคอนโทรล ที่ควรรู้จักในเบื้องต้น
การสร้าง Random ตัวเลขซ้ำและไม่ซ้ำ การเรียกดูไฟล์ในโฟลเดอร์ Function
C Programming Lecture no. 6: Function.
SCC : Suthida Chaichomchuen
Classification Abstraction
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
Object-Oriented System Analysis and Design
การควบคุมทิศทางการทำงานของโปรแกรม
การสืบทอด (Inheritance)
ส่วนของการเขียนโค๊ด ใน VB การเขียนโค๊ดจะเป็นแบบ Event Driven
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
คลาสและวัตถุ (4) (Class & Object)
C# Programming Exceed Camp: Day 3.
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
Inheritance การสืบทอดคลาส
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
บทที่ 11 การเขียนโปรแกรมแบบ Structured Programming และการจัดการตรวจสอบข้อผิดพลาด.
บทที่ 6 เมธอด.
แนวทางการปฏิบัติโครงการจูงมือ น้องน้อยบนดอยสูง 1.
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ณัฏฐวุฒิ เอี่ยมอินทร์
บทที่ 3 การวิเคราะห์ Analysis.
Chapter 16 / Unit 77 : VB : Subprogram & Function Senior Cybernaut ศูนย์การศึกษาต่อเนื่องแห่ง จุฬาลงกรณ์มหาวิทยาลัย SL102017/04C /ISSUE2.
โดย อ. นัฐพงศ์ ส่งเนียม การเขียนโปรแกรมคอมพิวเตอร์ และอัลกอรทึ่ม ( ) Lec04 : [ การแปลงจาก FlowChart.
บทที่ 4 Aggregation Abstraction
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
การวิเคราะห์และออกแบบระบบเชิงวัตถุ (OOAD)
การเขียนโปรแกรมคอมพิวเตอร์ และอัลกอริทึ่ม Lec03 : 25/03/2551 การทำงานกับ Event ต่าง ๆ โดย อ. นัฐพงศ์ ส่งเนียม
วิชา :: การเขียนโปรแกรมภาษาคอมพิวเตอร์ขั้นสูง
Modular Algorithm Function & Procedure By Nattapong Songneam
Selection Nattapong Songneam.
เขียนโปรแกรมเพื่อแสดงข้อมูลพนักงาน ด้วย ADO.NET vs. DataReader
Extra_08_Test_Modular_Calculator
วิชาคอมพิวเตอร์กราฟิก
การสร้างเกมส์ PUZZLE NUMBER
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
ฟอร์ม โมดูล และ MDI.
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
Object-Oriented Programming
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
Polymorphism กนกวรรธน์ เซี่ยงเจ็น
บทที่ 9 การใช้งานฟอร์มและคอนโทรลต่าง ๆ
Recursive Method.
Object Oriented Programming : OOP
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
Inheritance และ Encapsulation.  การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่ มีอยู่แล้ว  คลาสใหม่จะนำแอตทริบิวต์และเมธอดของ คลาสเดิมมาใช้  เป็นการถ่ายทอดคุณสมบัติจากคลาสหนึ่งสู่อีก.
Debugging กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
บทที่ 5 Function. Function Function เป็นการแบ่งโค้ดโปรแกรมออกเป็นส่วนย่อยๆ เพื่อทำงานบางอย่าง - โค้ดโปรแกรมเรียงต่อกันยาว - สามารถเรียกใช้ Function ซ้ำได้
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
แผนการจัดการเรียนรู้
โครงสร้างข้อมูลแบบ สแตก (stack)
chapter 2 - Construction and destruction - Overloading method
Week 5 While and Do-While loop (Control Structure 2)
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
1 Introduction to SQL กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา.
บทที่ 3 การสืบทอด (Inheritance)
ใบสำเนางานนำเสนอ:

1 Inheritance อุทัย เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา

2 Inheritance คือ คุณสมบัติในการ ถ่ายทอดลักษณะ และ Member จาก Class หนึ่งไปยังอีก Class หนึ่ง โดย Class ที่รับการถ่ายทอด จะมี ลักษณะเช่นเดียวกัน Class ต้นแบบ ทุกประการ โดยที่เราสามารถปรับปรุง เปลี่ยนแปลงลักษณะและ Member จาก Class ต้นแบบ ให้มี ความสามารถใหม่ๆ ขึ้นมา ช่วยให้ ประหยัดเวลาในการพัฒนา

3  Class ต้นแบบ เรียกว่า “Base Class” หรือ “Parent Class” หรือ “Parent Class”  Class ที่รับการถ่ายทอด เรียกว่า “Derived Class” หรือ “Child Class” หรือ “Child Class” Parent Class Child Class

4  Class ต้นแบบ คือ Person  Class ที่รับการถ่ายทอด คือ Student, Nurse, Doctor ซึ่งจะมีคุณลักษณะ เหมือน Person Person Nurse Doctor Student

5 เนื้อหา  Inheritance  Overriding  Accessibility  การป้องกันไม่ให้ Class ถูกใช้เป็น ต้นแบบ

6 Inheritance typename คือ Class ที่เราต้องการ ถ่ายทอด Member โดยการถ่ายทอด Member จะมาจาก Class ใด Class หนึ่ง ได้เพียง Class เดียวเท่านั้น Inherits typename

7 Example1: Inheritance (1/5) ต้องการสร้างฟอร์มสำหรับ รับ ข้อมูลชื่อ และนามสกุล โดยที่ให้ Class Person ถ่ายทอดคุณลักษณะ ให้กับ Class DerivedPerson และ ทดสอบการถ่ายทอดคุณลักษณะ ว่า เป็นไปตามนิยามของ Inheritance หรือไม่ ?

8 Example1: Inheritance (2/5) วัตถุคุณสมบัติ ค่าที่ กำหนด Label1Text First name: Label2Text Last name: TextBox1Text TextBox2Text

9 Example1: Inheritance (3/5)  เพิ่ม Class เข้ามาใน Project แล้วพิมพ์คำสั่ง ลงใน Class1.vb ดังนี้ Public Class Person Dim msName As String Property Name() As String Get Name = msName End Get Set (ByVal Value As String) msName = Value End Set End Property Public Function UpperName() As String Return UCase(msName) End Function End Class Public Class DerivedPerson Inherits Person End Class Person Property: Name Method: UpperName() DerivedPerson Property: Name Method: UpperName() ให้สังเกตว่าจะมีการถ่ายทอด จากต้นแบบมาทั้งหมด

10 Example1: Inheritance (4/5)  ใน Form1.vb ให้พิมพ์คำสั่งดังนี้ Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 Dim myPerson As New Person myPerson. Name = TextBox 1. Text myPerson. Name = TextBox 1. Text TextBox 1. Text = myPerson.UpperName () TextBox 1. Text = myPerson.UpperName () End Sub End Sub Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson myDerivedPerson. Name = TextBox 2. Text myDerivedPerson. Name = TextBox 2. Text TextBox 2. Text = myDerivedPerson.UpperName () TextBox 2. Text = myDerivedPerson.UpperName () End Sub End Sub

11 Example1: Inheritance (5/5)

12 Example2: Inheritance (1/5)  จากการถ่ายทอดคุณสมบัติใน Example1 เราสามารถปรับปรุง Class ที่ถูก Derived ให้สามารถมี คุณลักษณะ หรือ Member เพิ่มเติม ได้  โดยจะให้ Derived Class มีฟังก์ชัน สำหรับการตรวจสอบว่าข้อมูลที่ กรอกนั้นเป็นตัวอักษรทั้งหมดใช่ หรือไม่ ด้วย

13 Example2: Inheritance (2/5)  เราต้องปรับปรุง Class DerivedPerson Public Class DerivedPerson Inherits Person Inherits Person Public Function chkName () As String Public Function chkName () As String Dim i As Integer Dim i As Integer Dim temp _ name As String Dim temp _ name As String Dim result As Boolean = True Dim result As Boolean = True Const ascA As Integer = Asc (" a ") Const ascA As Integer = Asc (" a ") Const ascZ As Integer = Asc (" z ") Const ascZ As Integer = Asc (" z ") Person Property: Name Method: UpperName() DerivedPerson Property: Name Method: UpperName() Method: chkName() ให้สังเกตว่าหลังจากที่มีการถ่ายทอดจาก ต้นแบบมาทั้งหมด แล้ว Class DerivedPerson ได้ เพิ่มความสามารถ ด้วย Function chkName()

14 Example2: Inheritance (3/5) ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน temp_name = LCase ( Me. Name ) ' Me คือ Class DerivedPerson temp_name = LCase ( Me. Name ) ' Me คือ Class DerivedPerson For i = 1 To Len ( temp _ name ) For i = 1 To Len ( temp _ name ) If Asc ( Mid ( temp _ name, i, 1)) ascZ Then If Asc ( Mid ( temp _ name, i, 1)) ascZ Then result = False result = False Exit For Exit For End If End If Next Next If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A - Z, a - z เท่านั้น If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A - Z, a - z เท่านั้น Return Me. UpperName () Return Me. UpperName () Else Else Return " Invalid Entry " Return " Invalid Entry " End If End If End Function End Function End Class

15 Example2: Inheritance (4/5)  ใน Form1.vb ให้แก้ไขเฉพาะ TextBox2 นี้ Private Sub TextBox2_Leave(…) Private Sub TextBox2_Leave(…) Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson myDerivedPerson.Name = TextBox2.Text myDerivedPerson.Name = TextBox2.Text TextBox2.Text = myDerivedPerson.chkName() TextBox2.Text = myDerivedPerson.chkName() End Sub End Sub

16 Example2: Inheritance (5/5)

17 Overriding Overriding เป็นการทำให้ Member ของ Base Class และ Derived Class สามารถใช้ ชื่อซ้ำกันได้ ถ้าเราไม่พอใจกับ ความสามารถของ Member ตัวเดิมของ Base Class เราสามารถนำ Member ตัวนั้น มาแก้ไข โดยไม่มีผลกระทบต่อ Member ของ Base Class แต่อย่างใด อย่างไรก็ตามการทำ Overriding จะไม่ ครอบคลุมการทำ Constructor

18 Overriding สามารถทำได้ โดยกำหนดคำสั่ง ไว้ที่หน้า Member ที่ต้องการให้มีชื่อ ซ้ำกัน กำหนดดังนี้ Base Class : ใช้คำสั่ง Overridable Derived Class : ใช้คำสั่ง Overrides

19 Example3:Overriding (1/4)  ปกติการถ่ายทอด คุณลักษณะ Derived Class จะมีคุณลักษณะ เหมือน Base Class ทุก ประการ  อย่างไรก็ตาม เราเห็น ว่า Method : UpperName () ของ Class Person ไม่มี ประสิทธิภาพ เรา สามารถใช้วิธีการ Overriding ในการปรับปรุง ประสิทธิภาพของ Method: UpperName () ได้ Person Property: Name Method: UpperName() DerivedPerson Property: Name Method: UpperName()

20 Example3:Overriding (2/4)  ให้นิสิตแก้ไข Class1.vb ใหม่ โดยที่เราจะเพิ่มประสิทธิภาพให้กับ Function UpperName() Public Class Person Dim msName As String Dim msName As String Property Name () As String Property Name () As String Get Get Name = msName Name = msName End Get End Get Set ( ByVal Value As String ) Set ( ByVal Value As String ) msName = Value msName = Value End Set End Set End Property End Property Public Overridable Function UpperName () As String Public Overridable Function UpperName () As String Return UCase ( msName ) Return UCase ( msName ) End Function End Function End Class

21 Example3:Overriding (3/4) Public Class DerivedPerson Inherits Person Inherits Person Public Overrides Function UpperName () As String ‘ เดิมเป็น Function chkName() แต่เราเปลี่ยนโดยใช้ Overriding Public Overrides Function UpperName () As String ‘ เดิมเป็น Function chkName() แต่เราเปลี่ยนโดยใช้ Overriding Dim i As Integer Dim i As Integer Dim temp_name As String Dim temp_name As String Dim result As Boolean = True Dim result As Boolean = True Const ascA As Integer = Asc("a") Const ascA As Integer = Asc("a") Const ascZ As Integer = Asc("z") Const ascZ As Integer = Asc("z") ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson For i = 1 To Len(temp_name) For i = 1 To Len(temp_name) If Asc(Mid(temp_name, i, 1)) ascZ Then If Asc(Mid(temp_name, i, 1)) ascZ Then result = False result = False Exit For Exit For End If End If Next Next If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น Return Me.UpperName() Return Me.UpperName() Else Else Return "Invalid Entry" Return "Invalid Entry" End If End If End Function End Function End Class

22 Example3:Overriding (4/4)  ใน Form1.vb ให้แก้ไขเฉพาะ TextBox2 นี้ Private Sub TextBox2_Leave(…) Private Sub TextBox2_Leave(…) Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson myDerivedPerson.Name = TextBox2.Text myDerivedPerson.Name = TextBox2.Text TextBox2.Text = myDerivedPerson.UpperName() TextBox2.Text = myDerivedPerson.UpperName() End Sub End Sub

23 Overriding: MyBase การเรียกใช้ Member ที่ถูก กำหนดให้เป็นแบบ Overriding โดย ไม่ระบุเจ้าของใน Derived Class โดย ปกติ Member ที่ถูกนำมาประมวลผล จะได้แก่ Member ใน Derived Class เอง แต่ถ้าต้องการให้ Member ใน Base Class ถูกนำมาประมวลผลแทน โดย กำหนดค่าให้เป็น MyBase

24 Example4: MyBase (1/5)  ตัวอย่างนี้จะทำการปรับปรุงฟังก์ชัน UpperName () ในส่วน Derived Class ให้มี ความแตกกับ Base Class โดยที่ UpperName () ในส่วน Derived Class จะมีการ รับอาร์กิวเมนต์ว่าต้องการให้แปลง ข้อความเป็นอักษรตัวใหญ่หรือไม่ ?  ไม่รับอาร์กิวเมนต์ / หรือรับอาร์กิวเมนต์ False: ให้เรียกฟังก์ชัน UpperName () จาก Base Class  รับอาร์กิวเมนต์ True: ให้มีการตรวจสอบ โดยใช้ฟังก์ชัน UpperName () ของ Derived Class

25 Example4: MyBase (2/5)  ให้นิสิตแก้ไข Class1.vb ใหม่ โดยที่เราจะเพิ่มประสิทธิภาพให้กับ Function UpperName() Public Class Person Dim msName As String Dim msName As String Property Name() As String Property Name() As String Get Get Name = msName Name = msName End Get End Get Set(ByVal Value As String) Set(ByVal Value As String) msName = Value msName = Value End Set End Set End Property End Property Public Overridable Function UpperName(Optional ByVal chrOnly As Boolean = False) As String Public Overridable Function UpperName(Optional ByVal chrOnly As Boolean = False) As String Return UCase(msName) Return UCase(msName) End Function End Function End Class

26 Example4: MyBase (3/5) Public Class DerivedPerson Inherits Person Inherits Person Public Overrides Function UpperName(Optional ByVal chrOnly As Boolean = False) As String Public Overrides Function UpperName(Optional ByVal chrOnly As Boolean = False) As String If (chrOnly = True) Then If (chrOnly = True) Then Dim i As Integer Dim i As Integer Dim temp_name As String Dim temp_name As String Dim result As Boolean = True Dim result As Boolean = True Const ascA As Integer = Asc (" a ") Const ascA As Integer = Asc (" a ") Const ascZ As Integer = Asc (" z ") Const ascZ As Integer = Asc (" z ") ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน ' แปลงข้อมูลที่รับเข้ามาให้เป็นอักษรตัวเล็กทั้งหมดเสียก่อน temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson temp_name = LCase(Me.Name) ' Me คือ Class DerivedPerson For i = 1 To Len(temp_name) For i = 1 To Len(temp_name) If Asc(Mid(temp_name, i, 1)) ascZ Then If Asc(Mid(temp_name, i, 1)) ascZ Then result = False result = False Exit For Exit For End If End If Next Next If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น If result = True Then ' ถ้าข้อมูลที่รับเข้ามาเป็นตัวอักษร A-Z, a-z เท่านั้น Return Me.UpperName() Return Me.UpperName() Else Else Return " Invalid Entry " Return " Invalid Entry " End If End If Else Else Return MyBase.UpperName () ' จะเรียกใช้ function UpperName () จาก Person Return MyBase.UpperName () ' จะเรียกใช้ function UpperName () จาก Person End If End If End Function End Function End Class

27 Example4: MyBase (4/5)  ใน Form1.vb ให้พิมพ์คำสั่งดังนี้ Dim myDerivedPerson As New DerivedPerson Dim myDerivedPerson As New DerivedPerson Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 Private Sub TextBox 1_ Leave ( … ) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox1 myDerivedPerson. Name = TextBox 1. Text myDerivedPerson. Name = TextBox 1. Text TextBox 1. Text = myDerivedPerson. UpperName () TextBox 1. Text = myDerivedPerson. UpperName () End Sub End Sub Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 Private Sub TextBox 2_ Leave (…) ‘ เมื่อมีการสูญเสีย focus () จาก TextBox2 myDerivedPerson. Name = TextBox 2. Text myDerivedPerson. Name = TextBox 2. Text TextBox 2. Text = myDerivedPerson. UpperName(True) TextBox 2. Text = myDerivedPerson. UpperName(True) End Sub End Sub

28 Example4: MyBase (5/5) 1 2 3

29 Accessibility (1/2)  ในการนำ Class มาใช้งานเป็น ต้นแบบในการถ่ายทอด คุณลักษณะให้แต่ละ Member ของ Class มีขอบเขตในการถ่ายทอดที่ แตกต่างกันได้ โดยการกำหนด คำสั่งต่อไปนี้ประกอบ

30 Accessibility (2/2) คำสั่งขอบเขตในการถ่ายทอด Public ทุกที่ใน Project ที่ Class นั้นถูกสร้าง หรือนำไปใช้ Friend ทุกที่ใน Project ที่ Class นั้นถูกสร้าง ขึ้น Protected ทั้งใน Derived Class ที่ถ่ายทอดไปจาก Class นั้นและในตัว Class นั้นเอง Protected Friend ทุกที่ใน Project ที่ Class นั้นถูกสร้าง ขึ้นและใน Derived Class Private เฉพาะใน Class ของตัวเอง

31 Example5: Accessibility (1/4)  เปิด Project ใหม่  เพิ่ม Class1.vb เข้าไปใน Project  แล้วพิมพ์คำสั่งที่อยู่ในหน้าถัดไป

32 Example5: Accessibility (2/4) Public Class Person Public Overridable Sub PublicSub () Public Overridable Sub PublicSub () End Sub End Sub Friend Overridable Sub FriendSub () Friend Overridable Sub FriendSub () End Sub End Sub Protected Overridable Sub ProtectedSub () Protected Overridable Sub ProtectedSub () End Sub End Sub Protected Friend Overridable Sub ProtectedFriendSub () Protected Friend Overridable Sub ProtectedFriendSub () End Sub End Sub Private Sub PrivateSub () Private Sub PrivateSub () End Sub End Sub End Class

33 Example5: Accessibility (3/4)  เพิ่ม Class Student เข้าไปใน Class1.vb  พิมพ์คำสั่งดังที่ เห็น จะเห็นว่า Class Student มี Accessibility ตัว ใดบ้างที่สามารถ Derived คุณลักษณะจาก Class Person ได้

34 Example5: Accessibility (4/4)  แก้ไข Class Student ใน Class1.vb  พิมพ์คำสั่งดังที่ เห็น จะเห็นว่า Class Student มี Accessibility ตัว ใดบ้างที่สามารถ Derived คุณลักษณะจาก Class Person ได้

35 การป้องกันไม่ให้ Class ถูก ใช้เป็นต้นแบบ  นิสิตสามารถทำได้ โดยกำหนดคำสั่ง NotInheritable ไว้หน้าชื่อของ Class ที่ไม่ต้องการ ให้ถูกนำไปใช้เป็น Class ต้นแบบเพื่อ ถ่ายทอดไปยัง Class อื่น Public NotInheritable Class Person End Class Public Class DerivedClass Inherits Person‘ จะเกิดข้อผิดพลาดขึ้นเมื่อมีการ เรียกใช้งาน End Class