RED MY CLOUDY
PLEASE, USE YOUR BRAIN IF YOU GOT SOMETHING

Shadowing in Visual Basic (Indonesia)

Labels:
Bayangan dalam Visual Basic

When two programming elements share the same name, one of them can hide, or shadow , the other one. Ketika dua elemen pemrograman berbagi nama yang sama, salah satu dari mereka dapat menyembunyikan, atau bayangan, yang lain. In such a situation, the shadowed element is not available for reference; instead, when your code uses the element name, the Visual Basic compiler resolves it to the shadowing element. Dalam situasi demikian, elemen yang gelap tidak tersedia untuk referensi, sebaliknya, ketika kode Anda menggunakan nama elemen, kompiler Visual Basic resolve ke elemen bayangan.
Purpose Tujuan

The main purpose of shadowing is to protect the definition of your class members. Tujuan utama adalah untuk melindungi membayangi definisi dari anggota kelas Anda. The base class might undergo a change that creates an element with the same name as one you have already defined. Kelas dasar mungkin akan mengalami perubahan yang menciptakan suatu elemen dengan nama yang sama sebagai salah satu telah ditetapkan. If this happens, the Shadows modifier forces references through your class to be resolved to the member you defined, instead of to the new base class element. Jika ini terjadi, kekuatan pengubah Shadows referensi melalui kelas Anda harus diselesaikan ke anggota Anda ditetapkan, bukannya yang baru kelas dasar elemen.
Types of Shadowing Jenis bayangan

An element can shadow another element in two different ways. Bayangan dapat unsur unsur lain dalam dua cara yang berbeda. The shadowing element can be declared inside a subregion of the region containing the shadowed element, in which case the shadowing is accomplished through scope . Bayangan elemen yang dapat dideklarasikan di dalam daerah subregion berisi elemen gelap, dalam hal ini membayangi dicapai melalui cakupan. Or a deriving class can redefine a member of a base class, in which case the shadowing is done through inheritance . Atau berasal kelas dapat mendefinisikan kembali anggota kelas dasar, dalam hal ini membayangi dilakukan melalui warisan.
Shadowing Through Scope Melalui bayangan Lingkup

It is possible for programming elements in the same module, class, or structure to have the same name but different scope. Hal ini dimungkinkan untuk elemen pemrograman dalam modul yang sama, kelas, atau struktur untuk memiliki nama yang sama tetapi berbeda ruang lingkup. When two elements are declared in this manner and the code refers to the name they share, the element with the narrower scope shadows the other element (block scope is the narrowest). Ketika dua elemen dinyatakan dengan cara ini dan kode mengacu pada nama mereka berbagi, unsur dengan bayang-bayang lingkup sempit unsur lain (blok cakupannya sempit).

For example, a module can define a Public variable named temp , and a procedure within the module can declare a local variable also named temp . Sebagai contoh, sebuah modul dapat mendefinisikan sebuah variabel Publik bernama temp, dan prosedur dalam modul dapat mendeklarasikan variabel lokal juga bernama temp. References to temp from within the procedure access the local variable, while references to temp from outside the procedure access the Public variable. Referensi untuk temp dari dalam prosedur mengakses variabel lokal, sedangkan referensi untuk temp dari luar prosedur mengakses variabel Publik. In this case, the procedure variable temp shadows the module variable temp . Dalam kasus ini, variabel prosedur bayangan temp variabel modul temp.

The following illustration shows two variables, both named temp . Ilustrasi berikut menunjukkan dua variabel, keduanya bernama temp. The local variable temp shadows the member variable temp when accessed from within its own procedure p . Variabel lokal bayangan temp temp variabel anggota ketika diakses dari dalam prosedur sendiri p. However, the MyClass keyword bypasses the shadowing and accesses the member variable. Namun, MyClass bypasses kata kunci yang membayangi dan mengakses variabel anggota.
Shadowing through scope Pembayangan melalui cakupan

Diagram graphic membayangi melalui cakupan

For an example of shadowing through scope, see How to: Hide a Variable with the Same Name as Your Variable . Untuk contoh membayangi melalui cakupan, lihat Cara: Sembunyikan Variabel dengan Nama yang Sama sebagai Variabel Anda.
Shadowing Through Inheritance Melalui bayangan Warisan

If a derived class redefines a programming element inherited from a base class, the redefining element shadows the original element. Jika sebuah kelas turunan mengubah elemen pemrograman diwariskan dari kelas dasar, yang mendefinisikan ulang bayangan elemen elemen asli. You can shadow any type of declared element, or set of overloaded elements, with any other type. Anda dapat bayangan menyatakan setiap jenis elemen, atau seperangkat unsur-unsur kelebihan beban, dengan jenis lain. For example, an Integer variable can shadow a Function procedure. Sebagai contoh, sebuah variabel integer dapat bayangan Fungsi prosedur. If you shadow a procedure with another procedure, you can use a different parameter list and a different return type. Jika Anda bayangan sebuah prosedur dengan prosedur lain, Anda dapat menggunakan daftar parameter yang berbeda dan jenis yang berbeda kembali.

The following illustration shows a base class b and a derived class d that inherits from b . Ilustrasi berikut menunjukkan kelas dasar b dan kelas turunan d yang mewarisi dari b. The base class defines a procedure named proc , and the derived class shadows it with another procedure of the same name. Kelas dasar mendefinisikan prosedur bernama proc, dan kelas turunan bayang-bayang itu dengan prosedur lain dengan nama yang sama. The first Call statement accesses the shadowing proc in the derived class. Pernyataan Panggilan pertama mengakses membayangi proc di kelas turunan. However, the MyBase keyword bypasses the shadowing and accesses the shadowed procedure in the base class. Namun, kata kunci MyBase bypasses yang membayangi dan mengakses prosedur gelap di kelas dasar.
Shadowing through inheritance Pembayangan melalui warisan

Diagram graphic membayangi melalui warisan

For an example of shadowing through inheritance, see How to: Hide a Variable with the Same Name as Your Variable and How to: Hide an Inherited Variable . Untuk contoh membayangi melalui warisan, lihat Cara: Sembunyikan Variabel dengan Nama yang Sama seperti Anda Variabel dan Cara: Sembunyikan sebuah warisan Variabel.
Shadowing and Access Level Bayangan dan Level Akses

The shadowing element is not always accessible from the code using the derived class. Bayangan elemen yang tidak selalu dapat diakses dari kode menggunakan kelas turunan. For example, it might be declared Private . Sebagai contoh, mungkin akan menyatakan Pribadi. In such a case, shadowing is defeated and the compiler resolves any reference to the same element it would have if there had been no shadowing. Dalam kasus seperti itu, membayangi adalah kompilator dikalahkan dan menyelesaikan setiap referensi untuk elemen yang sama akan ada jika tidak ada bayangan. This element is the accessible element the fewest derivational steps backward from the shadowing class. Elemen ini adalah elemen diakses derivasional paling sedikit langkah mundur dari kelas bayangan. If the shadowed element is a procedure, the resolution is to the closest accessible version with the same name, parameter list, and return type. Jika elemen gelap adalah prosedur, resolusi adalah versi yang paling dekat yang dapat diakses dengan nama yang sama, daftar parameter, dan kembali mengetik.

The following example shows an inheritance hierarchy of three classes. Contoh berikut menunjukkan hirarki warisan tiga kelas. Each class defines a Sub procedure display , and each derived class shadows the display procedure in its base class. Setiap kelas mendefinisikan sebuah prosedur Kecamatan layar, dan masing-masing kelas yang diturunkan dari bayang-bayang layar prosedur dalam kelas dasar.

Public Class firstClass Kelas publik firstClass
Public Sub display() Public Sub display ()
MsgBox("This is firstClass") MsgBox ( "Ini firstClass")
End Sub End Sub
End Class Akhir Kelas
Public Class secondClass Kelas publik secondClass
Inherits firstClass Mewarisi firstClass
Private Shadows Sub display() Shadows Private Sub display ()
MsgBox("This is secondClass") MsgBox ( "Ini secondClass")
End Sub End Sub
End Class Akhir Kelas
Public Class thirdClass Kelas publik thirdClass
Inherits secondClass Mewarisi secondClass
Public Shadows Sub display() Public Shadows Sub display ()
MsgBox("This is thirdClass") MsgBox ( "Ini thirdClass")
End Sub End Sub
End Class Akhir Kelas
Module callDisplay Modul callDisplay
Dim first As New firstClass Dim pertama As New firstClass
Dim second As New secondClass Dim detik As New secondClass
Dim third As New thirdClass Dim ketiga As New thirdClass
Public Sub callDisplayProcedures() Public Sub callDisplayProcedures ()
' The following statement displays "This is firstClass". 'Pernyataan berikut akan menampilkan "Ini firstClass".
first.display() first.display ()
' The following statement displays "This is firstClass". 'Pernyataan berikut akan menampilkan "Ini firstClass".
second.display() second.display ()
' The following statement displays "This is thirdClass". 'Pernyataan berikut akan menampilkan "Ini thirdClass".
third.display() third.display ()
End Sub End Sub
End Module Akhir Modul

In the preceding example, the derived class secondClass shadows display with a Private procedure. Dalam contoh sebelumnya, kelas turunan bayangan secondClass layar dengan prosedur Swasta. When module callDisplay calls display in secondClass , the calling code is outside secondClass and therefore cannot access the private display procedure. Ketika panggilan callDisplay modul ditampilkan dalam secondClass, kode pemanggilan di luar secondClass dan karena itu tidak dapat mengakses prosedur layar pribadi. Shadowing is defeated, and the compiler resolves the reference to the base class display procedure. Bayangan dikalahkan, dan kompilator menyelesaikan referensi untuk kelas dasar prosedur layar.

However, the further derived class thirdClass declares display as Public , so the code in callDisplay can access it. Namun, lebih lanjut menyatakan thirdClass kelas turunan ditampilkan sebagai publik, sehingga kode di callDisplay dapat mengaksesnya.
Shadowing and Overriding Membayangi dan dikesampingkan

Do not confuse shadowing with overriding. Jangan bingung bayangan dengan meng-override. Both are used when a derived class inherits from a base class, and both redefine one declared element with another. Keduanya digunakan ketika kelas turunan mewarisi dari kelas dasar, dan keduanya mendefinisikan kembali satu elemen dinyatakan dengan yang lain. But there are significant differences between the two. Tetapi ada perbedaan yang signifikan antara keduanya. For a comparison, see Differences Between Shadowing and Overriding . Untuk perbandingan, lihat Perbedaan Antara bayangan dan meng-override.
Shadowing and Overloading Membayangi dan Overloading

If you shadow the same base class element with more than one element in your derived class, the shadowing elements become overloaded versions of that element. Jika Anda bayangan kelas dasar yang sama elemen dengan lebih dari satu unsur dalam kelas turunan, unsur-unsur yang membayangi jadi kelebihan muatan versi elemen. For more information, see Procedure Overloading . Untuk informasi lebih lanjut, lihat Prosedur Overloading.
Accessing a Shadowed Element Unsur mengakses shadow

When you access an element from a derived class, you normally do so through the current instance of that derived class, by qualifying the element name with the Me keyword. Ketika Anda mengakses sebuah elemen dari kelas turunan, biasanya Anda melakukannya melalui contoh saat ini yang berasal kelas, dengan kualifikasi unsur nama dengan Me kata kunci. If your derived class shadows the element in the base class, you can access the base class element by qualifying it with the MyBase keyword. Jika bayangan kelas turunan elemen di kelas dasar, Anda dapat mengakses kelas dasar elemen dengan kualifikasi dengan MyBase kata kunci.

For an example of accessing a shadowed element, see How to: Access a Variable Hidden by a Derived Class . Untuk contoh mengakses elemen gelap, lihat Cara: Mengakses Variable Tersembunyi oleh Derived Class.
Declaration of the Object Variable Deklarasi Variabel Objek

How you create the object variable can also affect whether the derived class accesses a shadowing element or the shadowed element. Bagaimana Anda membuat variabel objek juga dapat mempengaruhi apakah mengakses kelas turunan yang membayangi elemen atau unsur yang gelap. The following example creates two objects from a derived class, but one object is declared as the base class and the other as the derived class. Contoh berikut membuat dua objek dari kelas turunan, tetapi satu objek dinyatakan sebagai kelas dasar dan yang lain sebagai kelas turunan.

Public Class baseCls Kelas publik baseCls
' The following statement declares the element that is to be shadowed. 'Pernyataan berikut menyatakan elemen yang menjadi gelap.
Public z As Integer = 100 Publik z As Integer = 100
End Class Akhir Kelas
Public Class dervCls Kelas publik dervCls
Inherits baseCls Mewarisi baseCls
' The following statement declares the shadowing element. 'Pernyataan berikut menyatakan elemen bayangan.
Public Shadows z As String = "*" Shadows publik z As String = "*"
End Class Akhir Kelas
Public Class useClasses Kelas publik useClasses
' The following statement creates the object declared as the base class. 'Pernyataan berikut menciptakan objek dinyatakan sebagai kelas dasar.
Dim basObj As baseCls = New dervCls() Dim basObj Seperti baseCls = New dervCls ()
' Note that dervCls widens to its base class baseCls. 'Perhatikan bahwa dervCls melebar ke baseCls kelas basis.
' The following statement creates the object declared as the derived class. 'Pernyataan berikut menciptakan objek dinyatakan sebagai kelas turunan.
Dim derObj As dervCls = New dervCls() Dim derObj Seperti dervCls = New dervCls ()
Public Sub showZ() Public Sub showZ ()
' The following statement outputs 100 (the shadowed element). 'Pernyataan berikut output 100 (elemen yang gelap).
MsgBox("Accessed through base class: " & basObj.z) MsgBox ( "Diakses melalui kelas dasar:" & basObj.z)
' The following statement outputs "*" (the shadowing element). 'Pernyataan berikut output "*" (dalam bayangan elemen).
MsgBox("Accessed through derived class: " & derObj.z) MsgBox ( "Diakses melalui kelas turunan:" & derObj.z)
End Sub End Sub
End Class Akhir Kelas
0 comments:

Post a Comment

Follow Gilang_UT on Twitter
Instagram