Bahasa 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 mewarisi fitur dari kelas dasar dan dapat memiliki fitur tambahan sendiri. Misalnya,
class Animal {
// eat() function
// sleep() function
};
class Dog : public Animal {
// bark() function
};
Di sini, Dog
kelas diturunkan dari Animal
kelas. Sejak Dog
diturunkan dari Animal
, anggota Animal
dapat diakses oleh Dog
.
Perhatikan penggunaan kata kunci public
sambil mewarisi Anjing dari Hewan.
class Dog : public Animal {...};
Kita juga bisa menggunakan kata kunci private
dan protected
bukannya public
. Kita akan belajar tentang perbedaan antara menggunakan private
, public
dan protected
nanti di tutorial ini.
Warisan adalah adalah-hubungan . Kami menggunakan warisan hanya jika adalah-hubungan hadir di antara dua kelas.
Berikut beberapa contohnya:
// C++ program to demonstrate inheritance
#include <iostream>
using namespace std;
// base class
class Animal {
public:
void eat() {
cout << "I can eat!" << endl;
}
void sleep() {
cout << "I can sleep!" << endl;
}
};
// derived class
class Dog : public Animal {
public:
void bark() {
cout << "I can bark! Woof woof!!" << endl;
}
};
int main() {
// Create object of the Dog class
Dog dog1;
// Calling members of the base class
dog1.eat();
dog1.sleep();
// Calling member of the derived class
dog1.bark();
return 0;
}
Keluaran
I can eat! I can sleep! I can bark! Woof woof!!
Di sini, anjing1 (objek dari kelas turunan Dog
) dapat mengakses anggota kelas dasar Animal
. Itu karena Dog
diwarisi dari Animal
.
// Calling members of the Animal class
dog1.eat();
dog1.sleep();
Pengubah akses protected
sangat relevan dalam hal pewarisan C++.
Sukai private
anggota, protected
anggota tidak dapat diakses di luar kelas. Namun, mereka dapat diakses oleh kelas turunan dan kelas/fungsi teman .
Kami membutuhkan protected
anggota jika kita ingin menyembunyikan data suatu kelas, tetapi tetap ingin data tersebut diwarisi oleh kelas turunannya.
Untuk mempelajari lebih lanjut tentang protected, lihat tutorial C++ Access Modifiers kami.
// C++ program to demonstrate protected members
#include <iostream>
#include <string>
using namespace std;
// base class
class Animal {
private:
string color;
protected:
string type;
public:
void eat() {
cout << "I can eat!" << endl;
}
void sleep() {
cout << "I can sleep!" << endl;
}
void setColor(string clr) {
color = clr;
}
string getColor() {
return color;
}
};
// derived class
class Dog : public Animal {
public:
void setType(string tp) {
type = tp;
}
void displayInfo(string c) {
cout << "I am a " << type << endl;
cout << "My color is " << c << endl;
}
void bark() {
cout << "I can bark! Woof woof!!" << endl;
}
};
int main() {
// Create object of the Dog class
Dog dog1;
// Calling members of the base class
dog1.eat();
dog1.sleep();
dog1.setColor("black");
// Calling member of the derived class
dog1.bark();
dog1.setType("mammal");
// Using getColor() of dog1 as argument
// getColor() returns string data
dog1.displayInfo(dog1.getColor());
return 0;
}
Keluaran
I can eat! I can sleep! I can bark! Woof woof!! I am a mammal My color is black
Di sini, variabel type adalah protected
dan dengan demikian dapat diakses dari kelas turunan Dog
. Kita dapat melihat ini karena kita telah menginisialisasi type
di Dog
kelas menggunakan fungsi setType()
.
Sebaliknya, private
variabel warna tidak dapat diinisialisasi dalam Dog
.
class Dog : public Animal {
public:
void setColor(string clr) {
// Error: member "Animal::color" is inaccessible
color = clr;
}
};
Juga, karena protected
kata kunci menyembunyikan data, kami tidak dapat mengakses type langsung dari objek Dog
atau Animal
kelas.
// Error: member "Animal::type" is inaccessible
dog1.type = "mammal";
Dalam tutorial kami sebelumnya, kami telah mempelajari tentang penentu akses C++ seperti publik, pribadi, dan dilindungi.
Sejauh ini, kami telah menggunakan public
kata kunci untuk mewarisi kelas dari kelas dasar yang sudah ada sebelumnya. Namun, kita juga dapat menggunakan private
dan protected
kata kunci untuk mewarisi kelas. Misalnya,
class Animal {
// code
};
class Dog : private Animal {
// code
};
class Cat : protected Animal {
// code
};
Berbagai cara kita dapat memperoleh kelas dikenal sebagai mode akses . Mode akses ini memiliki efek sebagai berikut:
public
mode, maka anggota kelas dasar diwarisi oleh kelas turunan sebagaimana adanya.private
anggota di kelas turunan.public
anggota kelas dasar menjadi protected
anggota di kelas turunan.
private
anggota kelas dasar selalu private
di kelas turunan.
Untuk mempelajari lebih lanjut, kunjungi tutorial pewarisan C++ publik, pribadi, dan terproteksi kami.
Misalkan, kelas dasar dan kelas turunan memiliki fungsi anggota dengan nama dan argumen yang sama.
Jika kita membuat objek dari kelas turunan dan mencoba mengakses fungsi anggota itu, fungsi anggota di kelas turunan akan dipanggil alih-alih yang ada di kelas dasar.
Fungsi anggota dari kelas turunan menggantikan fungsi anggota dari kelas dasar.
Pelajari lebih lanjut tentang Penggantian fungsi di C++.
Bacaan yang Disarankan: C++ Multiple Inheritance
Bahasa C
Apa itu Kelas? Kelas C++ menggabungkan data dan metode untuk memanipulasi data menjadi satu. Kelas juga menentukan bentuk objek. Data dan metode yang terkandung dalam sebuah kelas dikenal sebagai anggota kelas. Kelas adalah tipe data yang ditentukan pengguna. Untuk mengakses anggota kelas, kami men
1) Jelaskan apa itu kelas dalam C++? Kelas dalam C++ dapat didefinisikan sebagai kumpulan fungsi dan data terkait di bawah satu nama. Ini adalah cetak biru objek. Program C++ dapat terdiri dari sejumlah kelas. 2) Bagaimana Anda bisa menentukan kelas di C++? Dengan menggunakan kata kunci kelas d
Apa itu Warisan dalam C#? Warisan adalah konsep penting dari C#. Warisan adalah konsep di mana Anda mendefinisikan kelas induk dan kelas anak. Kelas anak mewarisi metode dan properti dari kelas induk, tetapi pada saat yang sama, mereka juga dapat mengubah perilaku metode jika diperlukan. Kelas anak
Warisan dapat didefinisikan sebagai proses di mana satu kelas memperoleh properti (metode dan bidang) dari yang lain. Dengan menggunakan pewarisan, informasi dibuat dapat dikelola dalam urutan hierarkis. Kelas yang mewarisi sifat-sifat orang lain dikenal sebagai subkelas (kelas turunan, kelas anak)