z1 - Private a Protected
Copyright © 2017, mgr inż. Janusz Bonarowski
1
Private a Protected
Private – słowo kluczowe przypisujące dostęp do zmiennej wyłącznie z wnętrza klasy.
Protected – słowo kluczowe przypisujące dostęp do zmiennej z wnętrza klasy lub z klasy pochodnej.
Zadanie
Wykonać aplikację obliczającą objętość prostopadłościanu. Utworzyć klasę bazową Prostokat z właściwościami Długosc i Szerokosc oraz klasę potomną Prostopadloscian o właściwości Wysokosc i metodzie Objetosc, zwracającej objętość prostopadłościanu
Kod pliku klas
Public Class Prostokat
Private _Dlugosc As Single Private _Szerokosc As Single Public Property Dlugosc As Single Get
Return _Dlugosc End Get
Set(value As Single) _Dlugosc = value End Set
End Property
Public Property Szerokosc As Single Get
Return _Szerokosc End Get
Set(value As Single) _Szerokosc = value End Set
End Property End Class
Public Class Prostopadloscian Inherits Prostokat
Private _Wysokosc As Single Public Property Wysokosc As Single Get
Return _Wysokosc End Get
Set(value As Single) _Wysokosc = value End Set
End Property
Public Function Objetosc() As Single 'Objetosc = _Dlugosc _
' * _Szerokosc _ ' * _Wysokosc
Objetosc = MyBase.Dlugosc _ * MyBase.Szerokosc _ * _Wysokosc
End Function End Class
Kod pliku formularza
Private Sub Button1_Click(sender As Object, _
e As EventArgs) Handles Button1.Click Dim MojProstopadloscian As New Prostopadloscian MojProstopadloscian.Dlugosc = CSng(txtDlugosc.Text) MojProstopadloscian.Szerokosc = _
CSng(txtSzerokosc.Text) MojProstopadloscian.Wysokosc = CSng(txtWysokosc.Text) txtPole.Text = MojProstopadloscian.Objetosc.ToString End Sub
Na uwagę zasługuje wiersz zakomentowany w funkcji Objetosc
'Objetosc = _Dlugosc * _Szerokosc * _Wysokosc
Jeśli usuniemy znak komentarza z tej linii – zmienne _Dlugosc i _Szerokosc będą wyróżnione jako błędne. Po prostu funkcja „nie widzi” tych zmiennych, ponieważ są zadeklarowane w klasie bazowej słowem kluczowym Private. Dlatego, aby użyć wartości Długości i Szerokości – musimy się do nich odwołać poprzez obiekt bazowy.
Objetosc = MyBase.Dlugosc * MyBase.Szerokosc * _Wysokosc
z1 - Private a Protected
Copyright © 2017, mgr inż. Janusz Bonarowski
2
Jeśli w klasie bazowej zadeklarujemy zmienne lokalne _Dlugosc i _Szerokosc za pomocą słowa kluczowego Protected – zmienne te będą dostępne nie tylko w tej klasie, w której zostały
zadeklarowane lecz także w klasie potomnej.
Kod pliku klas
Public Class Prostokat
Protected _Dlugosc As Single Protected _Szerokosc As Single Public Property Dlugosc As Single Get
Return _Dlugosc End Get
Set(value As Single) _Dlugosc = value End Set
End Property
Public Property Szerokosc As Single Get
Return _Szerokosc End Get
Set(value As Single) _Szerokosc = value End Set
End Property End Class
Public Class Prostopadloscian Inherits Prostokat
Private _Wysokosc As Single Public Property Wysokosc As Single Get
Return _Wysokosc End Get
Set(value As Single) _Wysokosc = value End Set
End Property
Public Function Objetosc() As Single Objetosc = _Dlugosc _
* _Szerokosc _ * _Wysokosc End Function
End Class
Kod pliku formularza
Private Sub Button1_Click(sender As Object, _
e As EventArgs) Handles Button1.Click Dim MojProstopadloscian As New Prostopadloscian MojProstopadloscian.Dlugosc = CSng(txtDlugosc.Text) MojProstopadloscian.Szerokosc = _
CSng(txtSzerokosc.Text) MojProstopadloscian.Wysokosc = CSng(txtWysokosc.Text) txtPole.Text = MojProstopadloscian.Objetosc.ToString End Sub
Kod formularza i jego postać - w obu przypadkach pozostaje ten sam, rys. 1.
Rysunek 1