Bahasa C
Dalam tutorial ini, kita akan belajar tentang pengubah akses publik, privat, terlindungi, dan internal di C# dengan bantuan contoh.
Dalam C#, pengubah akses menentukan aksesibilitas tipe (kelas, antarmuka, dll) dan anggota tipe (bidang, metode, dll). Misalnya,
class Student {
public string name;
private int num;
}
Di sini,
Jenis Pengubah Akses
Dalam C#, ada 4 tipe dasar pengubah akses.
Saat kita mendeklarasikan suatu tipe atau tipe anggota public
, dapat diakses dari mana saja. Misalnya,
using System;
namespace MyApplication {
class Student {
public string name = "Sheeran";
public void print() {
Console.WriteLine("Hello from Student class");
}
}
class Program {
static void Main(string[] args) {
// creating object of Student class
Student student1 = new Student();
// accessing name field and printing it
Console.WriteLine("Name: " + student1.name);
// accessing print method from Student
student1.print();
Console.ReadLine();
}
}
}
Keluaran
Name: Sheeran Hello from Student class
Pada contoh di atas, kita telah membuat sebuah kelas bernama Student dengan bidang nama dan metode print() .
// accessing name field and printing it
Console.WriteLine("Name: " + student1.name);
// accessing print method from Student
student1.print();
Karena bidang dan metode bersifat publik, kami dapat mengaksesnya dari Program kelas.
Catatan :Kami telah menggunakan objek student1 dari Siswa kelas untuk mengakses anggotanya. Untuk mempelajari lebih lanjut, kunjungi kelas dan objek C# .
Saat kami mendeklarasikan anggota tipe dengan private
pengubah akses, hanya dapat diakses dalam class
yang sama atau struct
. Misalnya,
using System;
namespace MyApplication {
class Student {
private string name = "Sheeran";
private void print() {
Console.WriteLine("Hello from Student class");
}
}
class Program {
static void Main(string[] args) {
// creating object of Student class
Student student1 = new Student();
// accessing name field and printing it
Console.WriteLine("Name: " + student1.name);
// accessing print method from Student
student1.print();
Console.ReadLine();
}
}
}
Pada contoh di atas, kita telah membuat sebuah kelas bernama Student dengan bidang nama dan metode print() .
// accessing name field and printing it
Console.WriteLine("Name: " + student1.name);
// accessing print method from Student
student1.print();
Karena bidang dan metode bersifat pribadi, kami tidak dapat mengaksesnya dari Program kelas. Di sini, kode akan menghasilkan kesalahan berikut.
Error CS0122 'Student.name' is inaccessible due to its protection level
Error CS0122 'Student.print()' is inaccessible due to its protection level
Saat kita mendeklarasikan anggota tipe sebagai protected
, itu hanya dapat diakses dari kelas yang sama dan kelas turunannya. Misalnya,
using System;
namespace MyApplication {
class Student {
protected string name = "Sheeran";
}
class Program {
static void Main(string[] args) {
// creating object of student class
Student student1 = new Student();
// accessing name field and printing it
Console.WriteLine("Name: " + student1.name);
Console.ReadLine();
}
}
}
Pada contoh di atas, kita telah membuat sebuah kelas bernama Student dengan bidang nama . Karena bidang ini dilindungi, kami tidak dapat mengaksesnya dari Program kelas.
Di sini, kode akan menghasilkan kesalahan berikut.
Error CS0122 'Student.name' is inaccessible due to its protection level
Sekarang, mari kita coba mengakses protected
anggota dari kelas turunan.
using System;
namespace MyApplication {
class Student {
protected string name = "Sheeran";
}
// derived class
class Program : Student {
static void Main(string[] args) {
// creating object of derived class
Program program = new Program();
// accessing name field and printing it
Console.WriteLine("Name: " + program.name);
Console.ReadLine();
}
}
}
Keluaran
Name: Sheeran
Pada contoh di atas, kita telah membuat kelas Student dengan bidang yang dilindungi nama . Perhatikan bahwa kita telah mewarisi Program kelas dari Siswa kelas.
// accessing name field and printing it
Console.WriteLine("Name: " + program.name);
Sejak protected
anggota dapat diakses dari kelas turunan, kami dapat mengakses nama dari Program kelas.
Saat kita mendeklarasikan tipe atau anggota tipe sebagai internal
, itu hanya dapat diakses dalam majelis yang sama.
Majelis adalah kumpulan tipe (kelas, antarmuka, dll) dan sumber daya (data). Mereka dibangun untuk bekerja bersama dan membentuk unit fungsionalitas logis.
Itu sebabnya ketika kami menjalankan Majelis, semua kelas dan antarmuka di dalam Majelis berjalan bersama. Untuk mempelajari lebih lanjut, kunjungi Majelis C#.
using System;
namespace Assembly {
class Student {
internal string name = "Sheeran";
}
class Program {
static void Main(string[] args) {
// creating object of Student class
Student theStudent = new Student();
// accessing name field and printing it
Console.WriteLine("Name: " + theStudent.name);
Console.ReadLine();
}
}
}
Keluaran
Name: Sheeran
Pada contoh di atas, kita telah membuat sebuah kelas bernama Student dengan bidang nama . Karena bidangnya adalah internal
, kami dapat mengaksesnya dari Program kelas karena mereka berada di majelis yang sama.
Jika kita menggunakan internal
dalam satu Majelis, ia bekerja seperti public
pengubah akses.
Mari kita buat satu assembly terlebih dahulu.
// Code on Assembly1
using System;
namespace Assembly1 {
public class StudentName {
internal string name = "Sheeran";
}
class Program {
static void Main(string[] args) {
}
}
}
Di sini, kode ini ada di Assembly1 . Kami telah membuat bidang internal nama di dalam kelas StudentName . Sekarang, bidang ini hanya dapat diakses dari Majelis yang sama Assembly1 .
Sekarang, mari buat perakitan lain.
// Code on Assembly2
using System;
// access Assembly1
using Assembly1;
namespace Assembly2 {
class Program {
static void Main(string[] args) {
StudentName student = new StudentName();
// accessing name field from Assembly1
Console.Write(student.name);
Console.ReadLine();
}
}
}
Di sini, kode ini ada di Assembly2 . Kami mencoba mengakses nama bidang StudentName kelas(Assembly1 ).
Untuk mengakses bidang dari Assembly1 , pertama-tama kita harus menyetel referensi Assembly1 di Assembly2 . Sekarang kodenya
using Assembly1;
memungkinkan kami menggunakan kode dari Assembly1 ke Assembly2 .
Di sini, ketika kami mencoba mengakses name bidang dari Assembly2 , kami mendapatkan kesalahan.
Error CS0122 'StudentName.name' is inaccessible due to its protection level
Ini karena nama adalah bidang internal yang ada di Assembly1 .
protected internal
adalah kombinasi dari protected
dan internal
pengubah akses.
Saat kami mendeklarasikan anggota protected internal
, itu dapat diakses dari rakitan yang sama dan kelas turunan dari kelas yang memuatnya dari rakitan lain.
// Code on Assembly1
using System;
namespace Assembly1 {
public class Greet {
protected internal string msg="Hello";
}
class Program {
static void Main(string[] args) {
Greet greet = new Greet();
Console.WriteLine(greet.msg);
Console.ReadLine();
}
}
}
Keluaran
Hello
Kode di atas ada di Assembly1 .
Pada contoh di atas, kita telah membuat sebuah kelas bernama Sapa dengan bidang msg . Karena bidang ini dilindungi internal, kami dapat mengaksesnya dari Program kelas karena mereka berada di majelis yang sama.
Mari kita turunkan kelas dari Sapa di Majelis lain dan coba akses bidang internal yang dilindungi msg dari itu.
// Code on Assembly2
using System;
// access Assembly1
using Assembly1;
namespace Assembly2 {
// derived class of Greet
class Program: Greet {
static void Main(string[] args) {
Program greet = new Program();
// accessing name field from Assembly1
Console.Write(greet.msg);
Console.ReadLine();
}
}
}
Keluaran
Hello
Kode di atas ada di Assembly2 .
Dalam contoh di atas, kami mewarisi Program kelas dari Sapa kelas(dari Assembly1 ).
// accessing name field from Assembly1
Console.Write(greet.msg);
Kami dapat mengakses msg dari Salam kelas Assembly1 dari Assembly2 .
Ini karena msg adalah bidang internal yang dilindungi dan kami mencoba mengaksesnya dari kelas anak Sapa .
private protected
pengubah akses adalah kombinasi dari private
dan protected
. Ini tersedia dari C# versi 7.2 dan yang lebih baru.
Saat kami mendeklarasikan anggota private protected
, itu hanya dapat diakses dalam kelas yang sama, dan kelas turunannya dalam majelis yang sama. Misalnya,
// Code in Assembly1
using System;
namespace Assembly1 {
public class StudentName {
private protected string name = "Sheeran";
}
//derived class of StudentName class
class Program1 : StudentName {
static void Main(string[] args) {
Program1 student = new Program1();
// accessing name field from base class
Console.Write(student.name);
Console.ReadLine();
}
}
}
Keluaran
Sheeran
Kode di atas ada di Assembly1
Pada contoh di atas, kita telah membuat kelas StudentName dengan private protected
bidang nama .
Perhatikan bahwa kita telah mewarisi Program1 kelas dari StudentName kelas.
Sejak private protected
anggota dapat diakses dari kelas turunan dalam majelis yang sama, kami dapat mengakses nama dari Program1 kelas.
Mari kita turunkan kelas dari StudentName di Majelis lain dan coba akses bidang yang dilindungi pribadi nama dari itu. Misalnya,
// Code in Assembly2
using System;
//access Assembly1
using Assembly1;
namespace Assembly2 {
//derived class of StudentName
class Program : StudentName {
static void Main(string[] args) {
Program student = new Program();
// accessing name field from Assembly1
Console.Write(student.name);
Console.ReadLine();
}
}
}
Kode di atas ada di Assembly2
Pada contoh di atas, ketika kita mencoba mengakses name bidang dari kelas turunan StudentName , kami mendapatkan kesalahan.
Error CS0122 'StudentName.name' is inaccessible due to its protection level
Ini karena nama bidang ada di Assembly1 dan kelas turunannya ada di Assembly2 .
Catatan :Kami juga dapat menggunakan pengubah akses dengan tipe (kelas, antarmuka, dll). Namun, kami hanya dapat menggunakan tipe dengan pengubah akses publik dan internal.
Bahasa C
Warisan C++ Dalam tutorial ini, kita akan belajar tentang pewarisan dalam C++ dengan bantuan contoh. Pewarisan adalah salah satu fitur utama pemrograman berorientasi objek di C++. Ini memungkinkan kita untuk membuat kelas baru (kelas turunan) dari kelas yang ada (kelas dasar). Kelas turunan mewari
Pengubah Akses Java Dalam tutorial ini, kita akan belajar tentang Java Access Modifier, jenisnya, dan cara menggunakannya dengan bantuan contoh. Apa itu Access Modifiers? Di Java, pengubah akses digunakan untuk mengatur aksesibilitas (visibilitas) kelas, antarmuka, variabel, metode, konstruktor, a
Kelas Java ObjectInputStream Dalam tutorial ini, kita akan belajar tentang Java ObjectOutputStream dan metodenya dengan bantuan contoh. ObjectInputStream kelas java.io package dapat digunakan untuk membaca objek yang sebelumnya ditulis oleh ObjectOutputStream . Ini memperluas InputStream kelas abs
Apa itu Access Modifier (Specifier) di C#? Pengubah Akses atau Access Specifier dalam C# adalah kata kunci yang digunakan untuk menentukan visibilitas properti atau metode kelas. Ini digunakan ketika Anda tidak ingin program lain melihat properti atau metode kelas. Pengubah akses membatasi akses