4.2. Inheritance

Once upon a time, in a dimly lit cube...

After writing CreditCard, GiftCertificate, and Check classes, a self-realization occurs: "Self, I see that I can group all of the common behavior from these classes into a base class called Payment." This realization usually happens when you start to see that many classes you work with have the same method names (meaning that they exhibit the same behavior).

This general payment class (shown in Example 4-1) might contain methods to authorize, credit, and bill for a specific amount, as well as associate the payment with an account number. The general rules of the class are that all payments are authorized first, then they are billed. A billed payment may also be credited.

Example 4-1. General Payment class
Imports System Public Class Payment Private account As String Private amount As Double Private authorized As Boolean Private billed As Boolean Public Sub New(ByVal account As String) Me.account = account authorized = False billed = False amount = 0 End Sub Protected ReadOnly Property AccountNumber( ) As String Get Return Me.account End Get End Property Public Function Authorize(ByVal amount As Double) As Boolean If authorized Then Console.WriteLine("Payment is already authorized") Else Me.amount = amount Console.WriteLine("Authorizing payment for {0:c}", _ amount) authorized = True End If Return authorized End Function Public Function Bill( ) As Boolean If authorized Then Console.WriteLine("Billing payment for {0:c}", ...

Get Object-Oriented Programming with Visual Basic .NET now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.