Inheritance |
|
Fundamentals of Inheritance
Introduction
Imagine you create a class for a circle as follows:
<%@ Page Language="VB" %>
<!DOCTYPE html>
<script runat="server">
Const Pi = 3.14159265358979
Public Class Circle
Dim rad As Double
Public Sub New()
rad = 0.0
End Sub
Public Sub New(ByVal radius As Double)
rad = radius
End Sub
Public Property Radius() As Double = rad
Public ReadOnly Property Diameter As Double
Get
Return rad * 2.0
End Get
End Property
Public ReadOnly Property Circumference As Double
Get
Return Diameter * Pi
End Get
End Property
Public ReadOnly Property Area As Double
Get
Return rad * rad * Pi
End Get
End Property
End Class
Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs)
Dim radius As Double
radius = txtRadius.Text
Dim disc As New Circle(radius)
txtDiameter.Text = disc.Diameter
txtCircumference.Text = disc.Circumference
txtArea.Text = disc.Area
End Sub
</script>
<style>
#main-title
{
font-size: 1.08em;
font-weight: bold;
text-align: center;
font-family: Georgia, Garamond, 'Times New Roman', Times, serif;
}
.tblCircl { width: 200px; }
#whole
{
margin: auto;
width: 205px;
}
</style>
<html>
<head runat="server">
<title>Geometry - Circle</title>
</head>
<body>
<p id="main-title">Geometry - Circle</p>
<form id="frmCircl" runat="server">
<div id="whole">
<table class="tblCircle">
<tr>
<td>Radius:</td>
<td><asp:TextBox id="txtRadius" Width="75px" runat="server" /></td>
</tr>
<tr>
<td> </td>
<td><asp:Button id="btnCalculate" runat="server"
Text="Calculate" Width="85px"
OnClick="BtnCalculateClick" />
</td>
</tr>
<tr>
<td>Diameter:</td>
<td><asp:TextBox id="txtDiameter" runat="server" /></td>
</tr>
<tr>
<td>Circumference:</td>
<td><asp:TextBox id="txtCircumference" runat="server" /></td>
</tr>
<tr>
<td>Area:</td>
<td><asp:TextBox id="txtArea" runat="server" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>
Here is an example of using the webpage:
Inheritance is the ability to create a class whose behavior is based on another, existing, class.
In order to implement inheritance, you must have a class that provides the fundamental definition or behavior you need. You can use one of the .NET Framework built-in classes (but not all classes can be used in inheritance) or you can create your own class.
Creating a class that is based on another class is also referred to as deriving a class from another. The first class serves as parent or base. The class that is based on another class is also referred to as child or derived. To create a class based on another, use the following formula:
Public | Private Class child Inherits parent ' Body of the new class End Class
Based on this formula, to create a sphere class based on the earlier Circle class, you can proceed as follows:
<script runat="server">
Public Class Circle
End Class
Class Sphere
Inherits Circle
End Class
</script>
If you want to be able to access the class from other languages, you can precede its name with the Public keyword:
Public Class Circle
End Class
Public Class Sphere
Inherits Circle
End Class
</script>
After deriving a class, it becomes available and you can use it just as you would any other class. Of course, you must first declare a variable for it.
Inheritance and the Access to Class/Structure Members
Introduction
When creating a class and when dealing with inheritance, you can control what members can be accessed from outside the class and/or from only inherited members.
Inheritance and the Private Members of a Class
A member of a class is referred to as private if it can be accessed only from within the class. To create a private member variable, type the Private keyword to its left. Here is an example:
<script runat="server">
Public Class Circle
Private rad As Double
End Class
</script>
The Friendly Members of a Class
A member variable of a class is referred to as a friend if it can be accessed by any class of the same project. To create such a member variable, precede it with the Friend keyword. Here is an example:
<script Language="VB" runat="server">
Class Rectangle
Friend Height As Double
End Class
</script>
The Public Members of a Class
A member variable is referred to as public if it can be accessed by the classes of the same file. To create a public member variable of a class, precede it with the Public keyword. Here is an example:
<script Language="VB" runat="server">
Class Rectangle
Public Length As Double
Friend Height As Double
End Class
</script>
The Protected Members of a Class
Besides being made private, a member of a class can be protected to restrict its access. As seen for a private member, a protected member can be accessed by members of the same class. To indicate that a member is protected, set its access type to the Protected keyword. Here is an example:
<%@ Page Language="VB" %>
<!DOCTYPE html>
<script runat="server">
Public Class EquilateralTriangle
Protected Edge As Double
Public Sub New(ByVal side As Double)
Edge = side
End Sub
Public Property Side() As Double
Get
Return Edge
End Get
Set(ByVal value As Double)
Edge = value
End Set
End Property
Public ReadOnly Property Height() As Double
Get
Return Edge * Math.Sqrt(3.0) / 2.0
End Get
End Property
Public ReadOnly Property Perimeter() As Double
Get
Return 3.0 * Edge
End Get
End Property
Public ReadOnly Property Area() As Double
Get
Return Edge * Edge * Math.Sqrt(3.0) / 4.0
End Get
End Property
Public ReadOnly Property RadiusOfCircumscribedCircle() As Double
Get
Return Edge / Math.Sqrt(3.0)
End Get
End Property
Public ReadOnly Property RadiusOfInscribedCircle() As Double
Get
Return Edge * Math.Sqrt(3.0) / 6.0
End Get
End Property
End Class
Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs)
Dim side As Double
side = txtSide.Text
Dim tri As New EquilateralTriangle(side)
txtHeight.Text = tri.Height
txtPerimeter.Text = tri.Perimeter
txtArea.Text = tri.Area
txtRadiusOfCircumscribedCircle.Text = tri.RadiusOfCircumscribedCircle
txtRadiusOfInscribedCircle.Text = tri.RadiusOfInscribedCircle
End Sub
</script>
<style>
#main-title
{
font-size: 1.08em;
font-weight: bold;
text-align: center;
font-family: Georgia, Garamond, 'Times New Roman', Times, serif;
}
#whole
{
margin: auto;
width: 405px;
}
</style>
<html>
<head runat="server">
<title>Geometry - Equilateral Triangle</title>
</head>
<body>
<p id="main-title">Geometry - Equilateral Triangle</p>
<form id="frmGeometry" runat="server">
<div id="whole">
<table>
<tr>
<td>Side:</td>
<td><asp:TextBox id="txtSide" Width="75px" runat="server" /></td>
</tr>
<tr>
<td> </td>
<td><asp:Button id="btnCalculate" runat="server"
Text="Calculate" Width="85px"
OnClick="BtnCalculateClick" />
</td>
</tr>
<tr>
<td>Height:</td>
<td><asp:TextBox id="txtHeight" runat="server" /></td>
</tr>
<tr>
<td>Perimeter:</td>
<td><asp:TextBox id="txtPerimeter" runat="server" /></td>
</tr>
<tr>
<td>Area:</td>
<td><asp:TextBox id="txtArea" runat="server" /></td>
</tr>
<tr>
<td>Radius of Circumscribed Circle:</td>
<td><asp:TextBox id="txtRadiusOfCircumscribedCircle" runat="server" /></td>
</tr>
<tr>
<td>Radius of Inscribed Circle:</td>
<td><asp:TextBox id="txtRadiusOfInscribedCircle" runat="server" /></td>
</tr>
</table>
</div>
</form>
</body>
</html>
The main difference between a private and a protected member is that the former can be accessed by the members of its class but also the members of (a) derived class(es). Outside of those two environments, the access to a protected member would proeduce an error. Consider the following examples:
<script runat="server"> Const Pi = 3.14159265358979 Public Class Circle Private rad As Double Public Sub New() rad = 0.0 End Sub Public Sub New(ByVal radius As Double) rad = radius End Sub Protected Property Radius As Double Get Return rad End Get Set(ByVal value As Double) rad = value End Set End Property Public ReadOnly Property Diameter As Double Get Return rad * 2.0 End Get End Property Protected ReadOnly Property Circumference As Double Get Return Diameter * Pi End Get End Property Public ReadOnly Property Area As Double Get Return rad * rad * Pi End Get End Property End Class Public Class Sphere Inherits Circle Public ReadOnly Property Volume As Double Get Return Radius * Radius * Me.Radius * 4.0 * Pi / 3.0 End Get End Property End Class Public Class SportBall Private Ball As Sphere Private mass As Double Public Sub New(ByVal ball As Sphere, ByVal weight As Double) Me.Ball = ball Me.mass = weight End Sub Public ReadOnly Property Circumference As Double Get ' Error: The Circle.Circumference property is protected Return ball.Circumference End Get End Property Public Property Weight As Double Get Return mass End Get Set(ByVal value As Double) mass = value End Set End Property End Class Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs) Dim radius As Double radius = txtRadius.Text Dim ball As New Sphere() ' Error: The Circle.Radius property is protected/forbidden from external access ball.Radius = radius txtDiameter.Text = ball.Diameter ' Error: The Circle.Circumference property is protected from external access txtCircumference.Text = ball.Circumference txtArea.Text = ball.Area txtVolume.Text = ball.Volume End Sub </script>
Both the properties and the methods of a class can be protected.
Overriding or Sealing
An Overridable Member of a Class
When creating a derived class, the child class may share a certain characteristic with the parent class. For example, if you create a sphere that is based on a circle, both shapes have areas, but their areas are quite different. Overriding a member of a class consists of changing the member's behavior in the child class from the same member of the parent class.
When creating a class, to indicate that a member (a property or a method) can have a behavior different from inheriting classes, type the Overridable keyword on the left side of the member. Here are examples:
<%@ Page Language="VB" %> <!DOCTYPE html> <html> <head runat="server"> <script runat="server"> Public Class WorkDay Protected time As Double Protected hSalary As Double Public Sub New(ByVal worktime As Double, ByVal salary As Double) time = worktime hSalary = salary End Sub Public Property TimeWorked As Double Get Return time End Get Set(value As Double) time = value End Set End Property Public Overridable ReadOnly Property RegularTime As Double Get Return TimeWorked End Get End Property Public Overridable ReadOnly Property RegularPay As Double Get Return RegularTime * hSalary End Get End Property End Class Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs) Dim time As Double Dim salary As Double time = If(String.IsNullOrEmpty(txtTimeWorked.Text), 0.00, CDbl(txtTimeWorked.Text)) salary = If(String.IsNullOrEmpty(txtHourlySalary.Text), 0.00, CDbl(txtHourlySalary.Text)) Dim pay = New WorkDay(time, salary) txtRegularTime.Text = FormatNumber(pay.RegularTime) txtRegularPay.Text = FormatCurrency(pay.RegularPay) End Sub </script> <style> #main-title { font-size: 1.08em; font-weight: bold; text-align: center; font-family: Georgia, Garamond, 'Times New Roman', Times, serif; } #central { width: 355px; margin: auto } #tblPayroll { width: 350px; } </style> <title>Employee Payroll Evaluation</title> </head> <body> <form id="frmPayroll" runat="server"> <div id="central"> <p id="main-title">Employee Payroll Evaluation</p> <asp:Table id="tblPayroll" runat="server" BorderColor="#666666" BorderStyle="Double" BorderWidth="2px"> <asp:TableRow runat="server"> <asp:TableCell runat="server" BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt">Time Worked:</asp:TableCell> <asp:TableCell BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt" runat="server"> <asp:TextBox ID="txtTimeWorked" runat="server"></asp:TextBox> </asp:TableCell> <asp:TableCell runat="server"></asp:TableCell> </asp:TableRow> <asp:TableRow runat="server"> <asp:TableCell BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt" runat="server">Hourly Salary:</asp:TableCell> <asp:TableCell BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt" runat="server"> <asp:TextBox ID="txtHourlySalary" runat="server"></asp:TextBox></asp:TableCell> <asp:TableCell runat="server"> <asp:Button ID="btnCalculate" Text="Calculate" OnClick="btnCalculateClick" runat="server" /> </asp:TableCell> </asp:TableRow> <asp:TableRow runat="server"> <asp:TableCell BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt" runat="server">Regular Time:</asp:TableCell> <asp:TableCell BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt" runat="server"> <asp:TextBox ID="txtRegularTime" ReadOnly="true" runat="server"></asp:TextBox></asp:TableCell> <asp:TableCell runat="server"></asp:TableCell> </asp:TableRow> <asp:TableRow runat="server"> <asp:TableCell BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt" runat="server">Regular Pay:</asp:TableCell> <asp:TableCell BorderColor="Silver" BorderStyle="Solid" BorderWidth="1pt" runat="server"> <asp:TextBox ID="txtRegularPay" ReadOnly="true" runat="server"></asp:TextBox></asp:TableCell> <asp:TableCell runat="server"></asp:TableCell> </asp:TableRow> </asp:Table> </div> </form> </body> </html>
Here is an example of using the webpage:
Just because you have an overridable member in a class doesn't imply that you must inherit a class from it. An overridable member is primarily a normal member like any other.
Sealing a Class
A sealed class is one that cannot serve as a base class in inheritance. To mark a class as sealed, when creating the class, type the NotInheritable keyword to the left of the Class keyword. Here is an example:
<%@ Page Language="VB" %>
<!DOCTYPE html>
<html>
<head runat="server">
<script runat="server">
Public Class WorkDay
Protected time As Double
Protected hSalary As Double
Public Sub New(ByVal worktime As Double, ByVal salary As Double)
time = worktime
hSalary = salary
End Sub
Public Property TimeWorked As Double
Get
Return time
End Get
Set(value As Double)
time = value
End Set
End Property
Public Overridable ReadOnly Property RegularTime As Double
Get
Return TimeWorked
End Get
End Property
Public Overridable ReadOnly Property RegularPay As Double
Get
Return RegularTime * hSalary
End Get
End Property
End Class
Public Class OvertimeWork
Inherits WorkDay
Public Sub New(ByVal worktime As Double, ByVal salary As Double)
MyBase.New(worktime, salary)
End Sub
Private ReadOnly Property OvertimeSalary
Get
Return hSalary * 1.5
End Get
End Property
Public Overrides ReadOnly Property RegularTime As Double
Get
Return If(time <= 8.0, time, 8.0)
End Get
End Property
Public ReadOnly Property Overtime As Double
Get
Return If(time <= 8.0, 0.00, time - 8)
End Get
End Property
Public Overrides ReadOnly Property RegularPay As Double
Get
Return RegularTime * hSalary
End Get
End Property
Public ReadOnly Property OvertimePay As Double
Get
Return OvertimeSalary * Overtime
End Get
End Property
Public ReadOnly Property NetPay As Double
Get
Return RegularPay + OvertimePay
End Get
End Property
End Class
NotInheritable Class Payroll
Private id As Integer
Public Sub New(ByVal payId As Integer)
id = payId
End Sub
Public Property Monday As OvertimeWork
Public Property Tuesday As OvertimeWork
Public Property Wednesday As OvertimeWork
Public Property Thursday As OvertimeWork
Public Property Friday As OvertimeWork
Public Property Saturday As OvertimeWork
Public Property Sunday As OvertimeWork
Public ReadOnly Property RegularTime As Double
Get
Return Monday.RegularTime + Tuesday.RegularTime + Wednesday.RegularTime + Thursday.RegularTime + Friday.RegularTime + Saturday.RegularTime + Sunday.RegularTime
End Get
End Property
Public ReadOnly Property Overtime As Double
Get
Return Monday.Overtime + Tuesday.Overtime + Wednesday.Overtime + Thursday.Overtime + Friday.Overtime + Saturday.Overtime + Sunday.Overtime
End Get
End Property
Public ReadOnly Property RegularPay As Double
Get
Return Monday.RegularPay + Tuesday.RegularPay + Wednesday.RegularPay + Thursday.RegularPay + Friday.RegularPay + Saturday.RegularPay + Sunday.RegularPay
End Get
End Property
Public ReadOnly Property OvertimePay As Double
Get
Return Monday.OvertimePay + Tuesday.OvertimePay + Wednesday.OvertimePay + Thursday.OvertimePay + Friday.OvertimePay + Saturday.OvertimePay + Sunday.OvertimePay
End Get
End Property
Public ReadOnly Property NetPay As Double
Get
Return Monday.NetPay + Tuesday.NetPay + Wednesday.NetPay + Thursday.NetPay + Friday.NetPay + Saturday.NetPay + Sunday.NetPay
End Get
End Property
End Class
Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs)
Dim salary As Double
Dim pay As New Payroll(1001)
salary = If(String.IsNullOrEmpty(txtHourlySalary.Text), 0.00, CDbl(txtHourlySalary.Text))
Pay.Monday = New OvertimeWork(If(String.IsNullOrEmpty(txtTimeWorkedMonday.Text), 0.00, CDbl(txtTimeWorkedMonday.Text)), salary)
Pay.Tuesday = New OvertimeWork(If(String.IsNullOrEmpty(txtTimeWorkedTuesday.Text), 0.00, CDbl(txtTimeWorkedTuesday.Text)), salary)
Pay.Wednesday = New OvertimeWork(If(String.IsNullOrEmpty(txtTimeWorkedWednesday.Text), 0.00, CDbl(txtTimeWorkedWednesday.Text)), salary)
Pay.Thursday = New OvertimeWork(If(String.IsNullOrEmpty(txtTimeWorkedThursday.Text), 0.00, CDbl(txtTimeWorkedThursday.Text)), salary)
Pay.Friday = New OvertimeWork(If(String.IsNullOrEmpty(txtTimeWorkedFriday.Text), 0.00, CDbl(txtTimeWorkedFriday.Text)), salary)
Pay.Saturday = New OvertimeWork(If(String.IsNullOrEmpty(txtTimeWorkedSaturday.Text), 0.00, CDbl(txtTimeWorkedSaturday.Text)), salary)
Pay.Sunday = New OvertimeWork(If(String.IsNullOrEmpty(txtTimeWorkedSunday.Text), 0.00, CDbl(txtTimeWorkedSunday.Text)), salary)
txtMondayRegularTime.Text = FormatNumber(pay.Monday.RegularTime)
txtMondayOvertime.Text = FormatNumber(pay.Monday.Overtime)
txtMondayRegularPay.Text = FormatNumber(pay.Monday.RegularPay)
txtMondayOvertimePay.Text = FormatNumber(pay.Monday.OvertimePay)
txtMondayNetPay.Text = FormatNumber(pay.Monday.NetPay)
txtTuesdayRegularTime.Text = FormatNumber(pay.Tuesday.RegularTime)
txtTuesdayOvertime.Text = FormatNumber(pay.Tuesday.Overtime)
txtTuesdayRegularPay.Text = FormatNumber(pay.Tuesday.RegularPay)
txtTuesdayOvertimePay.Text = FormatNumber(pay.Tuesday.OvertimePay)
txtTuesdayNetPay.Text = FormatNumber(pay.Tuesday.NetPay)
txtWednesdayRegularTime.Text = FormatNumber(pay.Wednesday.RegularTime)
txtWednesdayOvertime.Text = FormatNumber(pay.Wednesday.Overtime)
txtWednesdayRegularPay.Text = FormatNumber(pay.Wednesday.RegularPay)
txtWednesdayOvertimePay.Text = FormatNumber(pay.Wednesday.OvertimePay)
txtWednesdayNetPay.Text = FormatNumber(pay.Wednesday.NetPay)
txtThursdayRegularTime.Text = FormatNumber(pay.Thursday.RegularTime)
txtThursdayOvertime.Text = FormatNumber(pay.Thursday.Overtime)
txtThursdayRegularPay.Text = FormatNumber(pay.Thursday.RegularPay)
txtThursdayOvertimePay.Text = FormatNumber(pay.Thursday.OvertimePay)
txtThursdayNetPay.Text = FormatNumber(pay.Thursday.NetPay)
txtFridayRegularTime.Text = FormatNumber(pay.Friday.RegularTime)
txtFridayOvertime.Text = FormatNumber(pay.Friday.Overtime)
txtFridayRegularPay.Text = FormatNumber(pay.Friday.RegularPay)
txtFridayOvertimePay.Text = FormatNumber(pay.Friday.OvertimePay)
txtFridayNetPay.Text = FormatNumber(pay.Friday.NetPay)
txtSaturdayRegularTime.Text = FormatNumber(pay.Saturday.RegularTime)
txtSaturdayOvertime.Text = FormatNumber(pay.Saturday.Overtime)
txtSaturdayRegularPay.Text = FormatNumber(pay.Saturday.RegularPay)
txtSaturdayOvertimePay.Text = FormatNumber(pay.Saturday.OvertimePay)
txtSaturdayNetPay.Text = FormatNumber(pay.Saturday.NetPay)
txtSaturdayNetPay.Text = FormatNumber(pay.Saturday.NetPay)
txtSundayRegularTime.Text = FormatNumber(pay.Sunday.RegularTime)
txtSundayOvertime.Text = FormatNumber(pay.Sunday.Overtime)
txtSundayRegularPay.Text = FormatNumber(pay.Sunday.RegularPay)
txtSundayOvertimePay.Text = FormatNumber(pay.Sunday.OvertimePay)
txtSundayNetPay.Text = FormatNumber(pay.Sunday.NetPay)
txtSundayNetPay.Text = FormatNumber(pay.Sunday.NetPay)
txtRegularTime.Text = FormatNumber(pay.RegularTime)
txtOvertime.Text = FormatNumber(pay.Overtime)
txtRegularPay.Text = FormatCurrency(pay.RegularPay)
txtOvertimePay.Text = FormatCurrency(pay.OvertimePay)
txtNetPay.Text = FormatCurrency(pay.NetPay)
End Sub
</script>
<style>
#main-title
{
font-size: 1.08em;
font-weight: bold;
text-align: center;
font-family: Georgia, Garamond, 'Times New Roman', Times, serif;
}
#central {
width: 635px;
margin: auto
}
#tblPayroll { width: 630px; }
</style>
<title>Employee Payroll Evaluation</title>
</head>
<body>
<form id="frmPayroll" runat="server">
<div id="central">
<p id="main-title">Employee Payroll Evaluation</p>
<br />
<asp:Table id="tblHourlySalary" runat="server">
<asp:TableRow runat="server">
<asp:TableCell runat="server" Width="100px"></asp:TableCell>
<asp:TableCell runat="server">Hourly Salary:</asp:TableCell>
<asp:TableCell runat="server">
<asp:TextBox id="txtHourlySalary" Width="65px" runat="server"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
<br />
<asp:Table ID="tblTimeRecords" runat="server">
<asp:TableRow runat="server">
<asp:TableCell runat="server" Width="100px"></asp:TableCell>
<asp:TableCell runat="server">Monday</asp:TableCell>
<asp:TableCell runat="server">Tuesday</asp:TableCell>
<asp:TableCell runat="server">Wednesday</asp:TableCell>
<asp:TableCell runat="server">Thursday</asp:TableCell>
<asp:TableCell runat="server">Friday</asp:TableCell>
<asp:TableCell runat="server">Saturday</asp:TableCell>
<asp:TableCell runat="server">Sunday</asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server"></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTimeWorkedMonday" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTimeWorkedTuesday" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTimeWorkedWednesday" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTimeWorkedThursday" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTimeWorkedFriday" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTimeWorkedSaturday" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTimeWorkedSunday" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
</asp:TableRow>
</asp:Table>
<p style="text-align: right"><asp:Button ID="btnCalculate" Text="Calculate" OnClick="btnCalculateClick" runat="server" Height="40px" Width="535px" /></p>
<hr />
<asp:Table ID="tblTimeWorkedSummary" runat="server">
<asp:TableRow runat="server">
<asp:TableCell Width="100px" runat="server"></asp:TableCell>
<asp:TableCell runat="server">Monday</asp:TableCell>
<asp:TableCell runat="server">Tuesday</asp:TableCell>
<asp:TableCell runat="server">Wednesday</asp:TableCell>
<asp:TableCell runat="server">Thursday</asp:TableCell>
<asp:TableCell runat="server">Friday</asp:TableCell>
<asp:TableCell runat="server">Saturday</asp:TableCell>
<asp:TableCell runat="server">Sunday</asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server">Regular Time</asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtMondayRegularTime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTuesdayRegularTime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtWednesdayRegularTime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtThursdayRegularTime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtFridayRegularTime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSaturdayRegularTime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSundayRegularTime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server">Overtime</asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtMondayOvertime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTuesdayOvertime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtWednesdayOvertime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtThursdayOvertime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtFridayOvertime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSaturdayOvertime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSundayOvertime" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server">Regular Pay</asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtMondayRegularPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTuesdayRegularPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtWednesdayRegularPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtThursdayRegularPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtFridayRegularPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSaturdayRegularPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSundayRegularPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server">Overtime Pay</asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtMondayOvertimePay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTuesdayOvertimePay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtWednesdayOvertimePay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtThursdayOvertimePay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtFridayOvertimePay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSaturdayOvertimePay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSundayOvertimePay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
</asp:TableRow>
</asp:Table>
<hr />
<asp:Table ID="tblNetPay" runat="server">
<asp:TableRow runat="server">
<asp:TableCell Width="100px" runat="server">Total Pay</asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtMondayNetPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtTuesdayNetPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtWednesdayNetPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtThursdayNetPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtFridayNetPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSaturdayNetPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
<asp:TableCell runat="server"><asp:TextBox id="txtSundayNetPay" Width="65px" Text="0.00" runat="server"></asp:TextBox></asp:TableCell>
</asp:TableRow>
</asp:Table>
<hr />
<asp:Table id="tblPayroll" runat="server" BorderColor="#666666" BorderStyle="Double" BorderWidth="4px">
<asp:TableRow runat="server">
<asp:TableCell Width="400px" runat="server"></asp:TableCell>
<asp:TableCell runat="server" Font-Bold="True" Font-Size="1.08em">Pay Summary</asp:TableCell>
<asp:TableCell runat="server"></asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server"></asp:TableCell>
<asp:TableCell runat="server">Regular Time:</asp:TableCell>
<asp:TableCell runat="server">
<asp:TextBox ID="txtRegularTime" Width="75px" ReadOnly="true" runat="server"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server"></asp:TableCell>
<asp:TableCell runat="server">Overtime:</asp:TableCell>
<asp:TableCell runat="server">
<asp:TextBox ID="txtOvertime" Width="75px" ReadOnly="true" runat="server"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server"></asp:TableCell>
<asp:TableCell runat="server">Regular Pay:</asp:TableCell>
<asp:TableCell runat="server">
<asp:TextBox ID="txtRegularPay" Width="75px" ReadOnly="true" runat="server"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server"></asp:TableCell>
<asp:TableCell runat="server">Overtime Pay:</asp:TableCell>
<asp:TableCell runat="server">
<asp:TextBox ID="txtOvertimePay" Width="75px" ReadOnly="true" runat="server"></asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow runat="server">
<asp:TableCell runat="server"></asp:TableCell>
<asp:TableCell runat="server">Net Pay:</asp:TableCell>
<asp:TableCell runat="server">
<asp:TextBox ID="txtNetPay" ReadOnly="true" Width="75px" runat="server"></asp:TextBox></asp:TableCell>
</asp:TableRow>
</asp:Table>
</div>
</form>
</body>
</html>
Here is an example of using the webpage:
If the class is marked with an access modifier, the NotInheritable keyword can appear before or after the access modifier. This means that both NotInheritable Public Class Payroll and Public NotInheritable Class Payroll work the same way.
A class that is derived from another can also be sealed. Remember that once a class is not inheritable, it cannot serve as a parent of another class. As an alternative, the class can be used to create a property in another class that would use it as parent. Here is an example:
<%@ Page Language="VB" %> <!DOCTYPE html> <script runat="server"> Public NotInheritable Class Rhombus Private len As Double Private hgt As Double Public Sub New(ByVal length As Double, ByVal height As Double) len = length hgt = height End Sub Public Property Length() As Double Public Property Height() As Double Public ReadOnly Property Area() As Double Get Return len * hgt / 2.0 End Get End Property End Class Public Class Rhombohedron Private dp As Double Private bs As Rhombus Public Sub New(ByVal base As Rhombus, ByVal length As Double) bs = base dp = length End Sub Public Property Depth() As Double Public Property Base() As Rhombus Public ReadOnly Property FaceArea() As Double Get Return bs.Area End Get End Property Public ReadOnly Property Volume() As Double Get Return bs.Area * dp End Get End Property End Class Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs) Dim p As Double Dim q As Double Dim d As Double Dim v As Double Dim r As Rhombus Dim rh As Rhombohedron p = txtLength.Text q = txtHeight.Text d = txtDepth.Text r = New Rhombus(p, q) rh = New Rhombohedron(r, d) lblLength.Text = p lblHeight.Text = q lblDepth.Text = d lblFaceArea.Text = rh.FaceArea lblVolume.Text = rh.Volume pnlRhombohedron.Visible = False pnlResults.Visible = True End Sub </script> <style> #main-title { font-size: 1.08em; font-weight: bold; text-align: center; font-family: Georgia, Garamond, 'Times New Roman', Times, serif; } .tblRhombohedron { width: 200px; } #whole { margin: auto; width: 205px; } </style> <html> <head runat="server"> <title>Geometric Volumes - Rhombohedron</title> </head> <body> <p id="main-title">Geometric Volumes - Rhombohedron</p> <form id="frmRhombohedron" runat="server"> <div id="whole"> <asp:Panel id="pnlRhombohedron" Visible="true" runat="server"> <h3>Base</h3> <table class="tblRhombohedron"> <tr> <td>Length:</td> <td><asp:TextBox id="txtLength" Width="75px" runat="server" /></td> </tr> <tr> <td>Height:</td> <td><asp:TextBox id="txtHeight" runat="server" Width="75px" /></td> </tr> </table> <h3>Prism</h3> <table class="tblRhombohedron"> <tr> <td>Depth:</td> <td><asp:TextBox id="txtDepth" Width="75px" runat="server" /></td> </tr> <tr> <td> </td> <td><asp:Button id="btnCalculate" runat="server" Text="Calculate" Width="85px" OnClick="BtnCalculateClick" /> </td> </tr> </table> </asp:Panel> <asp:Panel id="pnlResults" Visible="false" runat="server"> <table class="tblRhombohedron"> <tr> <td>Length:</td> <td><asp:Label id="lblLength" Width="75px" runat="server" /></td> </tr> <tr> <td>Height:</td> <td><asp:Label id="lblHeight" runat="server" Width="75px" /></td> </tr> <tr> <td>Depth:</td> <td><asp:Label id="lblDepth" runat="server" Width="75px" /></td> </tr> <tr> <td>Face Area: </td> <td><asp:Label id="lblFaceArea" runat="server" Width="75px" /></td> </tr> <tr> <td>Volume: </td> <td><asp:Label id="lblVolume" runat="server" Width="75px" /></td> </tr> </table> </asp:Panel> </div> </form> </body> </html>
Here is an example of using the webpage:
Inheritance With Me, My Class, and My Base
Inheritance and Me
When a class is based on another class, all public and protected members of the parent class are made available to the derived class(es). In a derived class, the public and the protected members of the parent class cane be access using the Me object. Remember that Me can access only the non-Shared members. Here is an example:
<%@ Page Language="VB" %> <!DOCTYPE html> <script runat="server"> Const Pi = 3.14159265358979 Public Class Circle Private rad As Double Public Sub New() rad = 0.0 End Sub Public Sub New(ByVal radius As Double) rad = radius End Sub Public Property Radius As Double Get Return rad End Get Set(ByVal value As Double) rad = value End Set End Property Public ReadOnly Property Diameter As Double Get Return rad * 2.0 End Get End Property Public ReadOnly Property Circumference As Double Get Return Diameter * Pi End Get End Property Public ReadOnly Property Area As Double Get Return rad * rad * Pi End Get End Property End Class Public Class Sphere Inherits Circle Public ReadOnly Property Volume As Double Get Return Me.Radius * Me.Radius * Me.Radius * 4.00 * Pi / 3.00 End Get End Property End Class Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs) Dim radius As Double radius = txtRadius.Text Dim ball As New Sphere() ball.Radius = radius txtDiameter.Text = ball.Diameter txtCircumference.Text = ball.Circumference txtArea.Text = ball.Area txtVolume.Text = ball.Volume End Sub </script> <style> #main-title { font-size: 1.08em; font-weight: bold; text-align: center; font-family: Georgia, Garamond, 'Times New Roman', Times, serif; } .tblCircle { width: 200px; } #whole { margin: auto; width: 205px; } </style> <html> <head runat="server"> <title>Geometry - Circle</title> </head> <body> <p id="main-title">Geometric Volumes - Sphere</p> <form id="frmCircl" runat="server"> <div id="whole"> <table class="tblCircle"> <tr> <td>Radius:</td> <td><asp:TextBox id="txtRadius" Width="75px" runat="server" /></td> </tr> <tr> <td> </td> <td><asp:Button id="btnCalculate" runat="server" Text="Calculate" Width="85px" OnClick="BtnCalculateClick" /> </td> </tr> <tr> <td>Diameter:</td> <td><asp:TextBox id="txtDiameter" runat="server" /></td> </tr> <tr> <td>Circumference:</td> <td><asp:TextBox id="txtCircumference" runat="server" /></td> </tr> <tr> <td>Symetric Area:</td> <td><asp:TextBox id="txtArea" runat="server" /></td> </tr> <tr> <td>volume:</td> <td><asp:TextBox id="txtVolume" runat="server" /></td> </tr> </table> </div> </form> </body> </html>
Here is an example of using the webpage:
Remember that Me can be assigned to a variable that refers to an object of the same class. Here is an example:
<%@ Page Language="VB" %>
<!DOCTYPE html>
<html>
<head runat="server">
<script runat="server">
Public Class Triangle
Public Sub Examine()
Dim inside = Me
End Sub
End Class
</script>
<title>Geometry</title>
</head>
<body>
</body>
</html>
Remember that you can compare an object to Me to find out what that object represents. This operation can be used to find out if an object refers to a parent, grand-parent, etc, of the object.
Identifying My Base
After creating a derived class, to let you access the parent class, the Visual Basic language provides a keyword named MyBase that gives a child class access to public and protected members of its parent class. Here are examples of using it:
<%@ Page Language="VB" %> <!DOCTYPE html> <script runat="server"> Public Class Square Private sd As Double Public Sub New() sd = 0.0 End Sub Public Sub New(ByVal side As Double) sd = side End Sub Public Property Side As Double Public ReadOnly Property Perimeter As Double Get Return sd * 4.0 End Get End Property Public ReadOnly Property Area As Double Get Return sd * sd End Get End Property End Class Public Class Cube Inherits Square Public Sub New() MyBase.Side = 0.0 End Sub Public Sub New(ByVal side As Double) MyBase.Side = side End Sub Public ReadOnly Property Volume As Double Get Return MyBase.Side * MyBase.Side * MyBase.Side End Get End Property End Class Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs) Dim side As Double Dim dice As Cube side = txtSide.Text dice = New Cube(side) txtVolume.Text = dice.Volume End Sub </script> <style> #main-title { font-size: 1.08em; font-weight: bold; text-align: center; font-family: Georgia, Garamond, 'Times New Roman', Times, serif; } .tblCube { width: 200px; } #whole { margin: auto; width: 205px; } </style> <html> <head runat="server"> <title>Geometry - Cube</title> </head> <body> <p id="main-title">Geometric Volumes - Cube</p> <form id="frmCube" runat="server"> <div id="whole"> <table class="tblCube"> <tr> <td>Side:</td> <td><asp:TextBox id="txtSide" Width="75px" runat="server" /></td> </tr> <tr> <td> </td> <td><asp:Button id="btnCalculate" runat="server" Text="Calculate" Width="85px" OnClick="BtnCalculateClick" /></td> </tr> <tr> <td>Volume:</td> <td><asp:TextBox id="txtVolume" runat="server" /></td> </tr> </table> </div> </form> </body> </html>
Here is an example of using the webpage:
Using My Base Constructor
If you decide to derive from a class that doesn't have a default constructor (a constructor without a parameter), if your new class has a constructor, you must use MyBase to access the constructor of the parent class. This is done using MyBase.New(). In the parentheses, pass the argument(s) of your new constructor. Here is an example:
<%@ Page Language="VB" %> <!DOCTYPE html> <script runat="server"> Public Class Hexagon Private sd As Double Public Sub New(ByVal side As Double) sd = side End Sub Public Property Side As Double Get Return sd End Get Set(value As Double) sd = value End Set End Property Public ReadOnly Property Area As Double Get Return sd * sd * 3.00 * Math.Sqrt(3.00) / 2.00 End Get End Property End Class Public Class Prism Inherits Hexagon Private hgt As Double Public Sub New(ByVal side As Double, ByVal height As Double) MyBase.New(side) MyBase.Side = side hgt = height End Sub Public Property Height As Double Get Return hgt End Get Set(value As Double) hgt = value End Set End Property Public ReadOnly Property Volume As Double Get Return MyBase.Area * hgt End Get End Property End Class Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs) Dim side As Double Dim height As Double side = txtSide.Text height = txtHeight.Text Dim precious = New Prism(side, height) txtVolume.Text = precious.Volume End Sub </script> <style> #main-title { font-size: 1.08em; font-weight: bold; text-align: center; font-family: Georgia, Garamond, 'Times New Roman', Times, serif; } .tblSquare { width: 200px; } #whole { margin: auto; width: 205px; } </style> <html> <head runat="server"> <title>Geometric Volumes - Prism</title> </head> <body> <p id="main-title">Geometric Volumes - Prism</p> <form id="frmPrism" runat="server"> <div id="whole"> <table class="tblPrism"> <tr> <td>Side:</td> <td><asp:TextBox id="txtSide" Width="75px" runat="server" /></td> </tr> <tr> <td>Height:</td> <td><asp:TextBox id="txtHeight" Width="75px" runat="server" /></td> </tr> <tr> <td> </td> <td><asp:Button id="btnCalculate" runat="server" Text="Calculate" Width="85px" OnClick="BtnCalculateClick" /></td> </tr> <tr> <td>Volume:</td> <td><asp:TextBox id="txtVolume" runat="server" /></td> </tr> </table> </div> </form> </body> </html>
Here is an example of using the webpage:
Inheritance for My Class
As an alternative to Me, to give you access to the members of a class and the member of (a) parent class(es) while inside a class, the Visual Basic language provides a keyword named MyClass. In most cases, it can be used where Me would be used. Here are examples:
<%@ Page Language="VB" %> <!DOCTYPE html> <script runat="server"> Const Pi = 3.14159265358979 Public Class Circle Private rad As Double Public Sub New(ByVal radius As Double) MyClass.rad = radius End Sub Public Property Radius As Double Get Return MyClass.rad End Get Set(ByVal value As Double) MyClass.rad = value End Set End Property Public ReadOnly Property Diameter As Double Get Return MyClass.rad * 2.0 End Get End Property Public ReadOnly Property Circumference As Double Get Return MyClass.Diameter * Pi End Get End Property Public ReadOnly Property Area As Double Get Return MyClass.rad * MyClass.rad * Pi End Get End Property End Class Public Class Sphere Inherits Circle Public Sub New(ByVal radius As Double) MyBase.New(radius) End Sub Public ReadOnly Property Volume As Double Get Return Me.Radius * Me.Radius * Me.Radius * 4.0 * Pi / 3.0 End Get End Property End Class Public Class Cylinder Inherits Circle Private hgt As Double Public Sub New(ByVal radius As Double, ByVal height As Double) MyBase.New(radius) MyClass.hgt = height End Sub Public ReadOnly Property Volume As Double Get Return MyClass.Area * MyClass.hgt End Get End Property End Class Public Class Tank Private rad As Double Private hgt As Double Public Sub New(ByVal radius As Double, ByVal height As Double) MyClass.rad = radius MyClass.hgt = height End Sub Public ReadOnly Property Sides As Sphere Get Return New Sphere(MyClass.rad) End Get End Property Public ReadOnly Property Cylinder As Cylinder Get Return New Cylinder(MyClass.rad, MyClass.hgt) End Get End Property Public ReadOnly Property Area As Double Get Return MyClass.Sides.Area + (MyClass.Sides.Circumference * MyClass.hgt) End Get End Property Public ReadOnly Property Volume As Double Get Return MyClass.Sides.Volume + MyClass.Cylinder.Volume End Get End Property End Class Sub btnCalculateClick(ByVal sender As Object, ByVal e As EventArgs) Dim radius As Double Dim height As Double radius = If(String.IsNullOrEmpty(txtRadius.Text), 0.00, txtRadius.Text) height = If(String.IsNullOrEmpty(txtHeight.Text), 0.00, txtHeight.Text) Dim tank As New Tank(radius, height) txtDiameter.Text = tank.Sides.Diameter txtCircumference.Text = tank.Sides.Circumference txtArea.Text = tank.Area txtVolume.Text = tank.Volume End Sub </script> <style> #main-title { font-size: 1.08em; font-weight: bold; text-align: center; font-family: Georgia, Garamond, 'Times New Roman', Times, serif; } #whole { margin: auto; width: 236px; } </style> <html> <head runat="server"> <title>Geometric Volumes - Tank</title> </head> <body> <p id="main-title">Geometric Volumes - Tank</p> <form id="frmGeometry" runat="server"> <div id="whole"> <table class="tblCircle"> <tr> <td>Radius:</td> <td><asp:TextBox id="txtRadius" Width="75px" runat="server" /></td> </tr> <tr> <td>Height:</td> <td><asp:TextBox id="txtHeight" Width="75px" runat="server" /></td> </tr> <tr> <td> </td> <td><asp:Button id="btnCalculate" runat="server" Text="Calculate" Width="85px" OnClick="BtnCalculateClick" /> </td> </tr> <tr> <td>Diameter:</td> <td><asp:TextBox id="txtDiameter" runat="server" /></td> </tr> <tr> <td>Circumference:</td> <td><asp:TextBox id="txtCircumference" runat="server" /></td> </tr> <tr> <td>Area:</td> <td><asp:TextBox id="txtArea" runat="server" /></td> </tr> <tr> <td>volume:</td> <td><asp:TextBox id="txtVolume" runat="server" /></td> </tr> </table> </div> </form> </body> </html>
Here is an example of using the webpage:
While Me is an object, MyClass is not; it is only a keyword. As a result, while you can assign Me to a variable, you cannot assign MyClass (by itself) to anything:
<script runat="server"> Public Class Cylinder Public Sub Examine() ' This is valid Dim e = Me ' This ain't allowed Dim y = MyClass End Sub End Class </script>
In the same way, you cannot perform a comparison on MyClass to find out what object it refers, which you can do on Me:
<script runat="server"> Public Class Cylinder Inherits Circle Public Sub Examine(ByVal side As Circle) ' This is valid If side Is Me Then side.Radius = 1.0 End If ' This ain't allowed If side Is MyClass Then side.Radius = 1.0 End If End Sub End Class </script>