- Ang inheritance ay nagbibigay-daan sa code na magamit muli at mapalawak nang mahusay, na nagpo-promote ng modularity sa disenyo.
- Maaaring gumawa ng mga child class na nagmamana ng mga karaniwang feature mula sa isang parent class, na nagpapakadalubhasa sa mga ito kung kinakailangan.
- Ang mga wika tulad ng Java, Python, at C# ay nag-aalok ng iba't ibang mga pagpapatupad at limitasyon para sa mana.

Binago ng object-oriented programming (OOP) kung paano binubuo at inoorganisa ng mga developer ang kanilang mga proyekto. Sa loob ng paradigma na ito, ang inheritance ay gumaganap ng isang pangunahing papel, dahil pinapayagan nito ang mahusay na muling paggamit at pagpapalawak ng code. Ngunit ano nga ba ang inheritance sa object-oriented programming, at bakit ito napakahalaga?
Ang mana ay hindi lamang isang teknikal na konsepto; ay isang mahusay na tool na tumutulong sa mga developer na gawing mas intuitive ang totoong mundo. Ang mekanismong ito ay nagpapahintulot sa isang klase na magmula sa isa pa, na namamana ng mga katangian at pamamaraan nito. Sa buong artikulong ito, tutuklasin natin nang malalim kung paano ito gumagana, ang mga pakinabang nito, praktikal na mga halimbawa at ang mga pangunahing tampok ng mahalagang elementong ito ng OOP.
Ano ang pamana sa object-oriented programming?
Ang pagmamana ay isang mekanismo sa object-oriented programming na nagpapahintulot sa paggamit ng mga katangian at pamamaraan mula sa isang parent class sa isang derived o child class. Hinihikayat ng mekanismong ito ang muling paggamit ng code sa pamamagitan ng pagpapalawak at pag-espesyalisa sa kilos na tinukoy sa mga parent class. Sa madaling salita, kung mayroon kang parent class na tinatawag na "Vehicle," maaari kang lumikha ng mga child class tulad ng "Car" o "Motorcycle" na magmamana ng mga karaniwang katangian ng "Vehicle."
Ang parent class ay itinuturing na isang generalization, habang ang mga child class ay mga specialization. Halimbawa, kung tinukoy ng parent class ang isang "move" na paraan, maaaring gamitin ito ng mga nagmula na klase, palawigin ito, o kahit na muling tukuyin ito ayon sa kanilang sariling mga partikular na pag-uugali.
Mga kalamangan ng mana
- Muling paggamit ng code: Sa pamamagitan ng pagmamana ng mga katangian at pamamaraan mula sa isang batayang klase, maiiwasan mo ang paulit-ulit na code sa mga nagmula na klase.
- Extensibility: Binibigyang-daan ka nitong magdagdag ng mga bagong pag-andar o baguhin ang mga umiiral na sa mga nagmula na klase.
- Hierarchical na organisasyon: Pinapadali nito ang pagbubuo ng code sa mga lohikal na hierarchy, na sumasalamin sa mga relasyon sa totoong mundo.
- Standardisasyon: Pinapanatili ang pare-pareho sa mga ibinahaging pamamaraan at katangian sa pagitan ng mga kaugnay na klase.
Relasyon sa pagitan ng mga klase: Base class at derived class
Sa isang hierarchical structure, ang base class, na kilala rin bilang superclass , ay tumutukoy sa mga karaniwang katangian at pag-uugali na maaaring manahin. Ang mga derivative class , o subclass, ay nagmamana ng mga katangiang ito at maaaring magpakadalubhasa sa pamamagitan ng pagdaragdag ng mga bagong katangian o pamamaraan, o sa pamamagitan ng pag-override sa mga umiiral na.
Halimbawa, kung tutukuyin natin ang isang batayang klase na tinatawag na "Animal", maaari tayong lumikha ng mga subclass tulad ng "Mammal" o "Reptile". Kaya, lahat sila ay magbabahagi ng mga karaniwang katangian tulad ng "paghinga", ngunit ang bawat isa ay maaaring may mga tiyak na pamamaraan depende sa kanilang kalikasan, tulad ng "pagpapasuso" sa kaso ng mga mammal.
Halimbawa ng code: Pamana sa iba't ibang wika
Tingnan natin kung paano ginagamit ang inheritance sa ilan sa mga pinakasikat na programming language:
Pamana sa Python
Ang inheritance ay ipinatupad sa pamamagitan ng pagpasa sa base class bilang argumento sa kahulugan ng nagmula na klase:
class Animal:
def __init__(self, especie):
self.especie = especie
def mover(self):
print("El animal se está moviendo")
class Perro(Animal):
def ladrar(self):
print("Guau, guau")
mi_perro = Perro("Canino")
mi_perro.mover()
mi_perro.ladrar()
Mana sa Java
Sa Java, ang keyword na extends ay ginagamit upang maitatag ang relasyon ng mana:
public class Animal {
public void mover() {
System.out.println("El animal se está moviendo.");
}
}
public class Perro extends Animal {
public void ladrar() {
System.out.println("Guau, guau");
}
}
public class Main {
public static void main(String[] args) {
Perro miPerro = new Perro();
miPerro.mover();
miPerro.ladrar();
}
}
Pamana sa C#
Sa C#, ang inheritance ay ginagamit katulad ng sa Java, gamit ang keyword na ` :` upang ipahiwatig na ang isang klase ay nagmamana mula sa isa pa:
class Animal {
public void Mover() {
Console.WriteLine("El animal se está moviendo.");
}
}
class Perro : Animal {
public void Ladrar() {
Console.WriteLine("Guau, guau");
}
}
class Program {
static void Main(string[] args) {
Perro miPerro = new Perro();
miPerro.Mover();
miPerro.Ladrar();
}
}
Simple inheritance at multiple inheritance
Maraming mga lengguwahe ng programming, tulad ng Java at C#, ang sumusuporta lamang sa single inheritance , ibig sabihin ang isang derived class ay maaari lamang magmana mula sa isang base class. Gayunpaman, ang mga lengguwahe tulad ng Python ay nagpapahintulot ng multiple inheritance , kung saan ang isang klase ay maaaring magmana mula sa maraming base class.
Paggamit ng mga pamamaraan at overriding
Ang isa sa mga pinaka-kapaki-pakinabang na tampok ng mana ay ang kakayahang i-override ang mga pamamaraan ng batayang klase. Nagbibigay-daan ito sa pag-uugali ng isang pamamaraan na maiangkop sa mga partikular na pangangailangan ng nagmula na klase.
Halimbawa, kung ang isang base class ay may "move" method, maaaring i-override ito ng isang derived class para tukuyin kung paano ilipat:
class Vehiculo {
public void mover() {
System.out.println("El vehículo se está moviendo.");
}
}
class Coche extends Vehiculo {
@Override
public void mover() {
System.out.println("El coche está avanzando por la carretera.");
}
}
Sa kasong ito, kung ang "move" na paraan ay tinawag mula sa isang object ng "Car" class, ang partikular na bersyon ng klase na iyon ay isasagawa.
Polymorphism at mana
Ang polymorphism ay isang pangunahing konsepto na may kaugnayan sa mana. Nagbibigay-daan sa isang object na ituring bilang isang instance ng base class nito, habang pinapanatili ang gawi na tinukoy sa nagmula nitong klase. Ito ay lalong kapaki-pakinabang sa mga istruktura tulad ng mga listahan o array na naglalaman ng mga bagay na may iba't ibang uri.
Por ejemplo:
Animal[] animales = { new Perro(), new Gato() };
for (Animal animal : animales) {
animal.hacerSonido();
}
Ang inheritance ay isang makapangyarihang tool sa object-oriented programming na hindi lamang nagbibigay-daan sa muling paggamit ng code, ngunit lumilikha din ng hierarchical na relasyon sa pagitan ng mga klase at naghihikayat ng mas modular at organisadong disenyo ng software. Ang pag-unawa sa mga pangunahing kaalaman nito at kung paano ito ilapat nang tama ay mahalaga para sa sinumang developer na gustong magsulat ng mahusay at mapanatili na code.