Objektinio programavimo viena iš pagrindinių sąvokų yra paveldėjimas. Java programoje paveldėjimas leidžia kurti naujas klases remiantis esamomis, paveldint jų savybes ir elgesį. Santykis tarp klasių dažnai vadinamas „yra-a“ ryšiu. Šiame skyriuje išnagrinėsime, kas yra ryšys ir kaip jis įgyvendinamas Java.
Paveldėjimo supratimas:
Prieš gilinantis į santykius, labai svarbu suvokti paveldėjimo sąvoką. Paveldėjimas yra mechanizmas, leidžiantis klasei įgyti kitos klasės savybes ir metodus. Klasė, iš kurios paveldima, yra žinoma kaip superklasė arba bazinė klasė, o paveldima klasė vadinama poklasiu arba išvestine klase.
„Is-A“ santykiai:
Ryšys yra, taip pat žinomas kaip paveldėjimo ryšys, reiškia santykių tarp dviejų klasių tipą, kai viena klasė yra specializuota kitos klasės versija. Tai reiškia, kad poklasis yra tam tikras jo superklasės tipas. Pavyzdžiui, apsvarstykite klasės hierarchiją su superklase „Gyvūnu“ ir poklasiu „Šuo“. Galima sakyti, kad šuo yra gyvūnas, o tai atspindi santykius.
Is-A santykių pranašumai:
„Is-a“ ryšys suteikia keletą „Java“ programavimo pranašumų:
„Is-A“ ryšio diegimas „Java“:
Norint nustatyti ryšį tarp „Java“ klasių, naudojamas raktinis žodis „pratęsia“. Poklasis išplečia superklasę, nurodydamas, kad jis paveldi visus superklasės narius (laukus ir metodus). Poklasio kūrimo sintaksė yra tokia:
class SubclassName extends SuperclassName { // Subclass members }
Pavyzdžiui, panagrinėkime anksčiau minėtus gyvūno ir šuns santykius:
class Animal { // Superclass members } class Dog extends Animal { // Subclass members }
Šiuo atveju klasė „Šuo“ išplečia klasę „Gyvūnas“, reiškiantį ryšį. Šunų klasė paveldi gyvūnų klasės savybes, tokias kaip jos laukai ir metodai. Be to, šunų klasė gali apibrėžti savo unikalius laukus ir metodus.
Štai programos pavyzdys, parodantis „Java“ ryšį, ypač gyvūnų ir šunų hierarchiją:
IsARelationshipExample.java
// Superclass class Animal { protected String name; public Animal(String name) { this.name = name; } public void makeSound() { System.out.println('The animal makes a sound.'); } } // Subclass class Dog extends Animal { private String breed; public Dog(String name, String breed) { super(name); this.breed = breed; } @Override public void makeSound() { System.out.println('The dog barks.'); } public void fetch() { System.out.println('The dog fetches a ball.'); } } // Main class public class IsARelationshipExample { public static void main(String[] args) { // Create an Animal object Animal animal = new Animal('Generic Animal'); // Create a Dog object Dog dog = new Dog('Buddy', 'Labrador Retriever'); // Polymorphism - Dog is treated as an Animal Animal anotherDog = new Dog('Max', 'German Shepherd'); // Call methods on the Animal object System.out.println('Animal Name: ' + animal.name); animal.makeSound(); System.out.println(); // Call methods on the Dog object System.out.println('Dog Name: ' + dog.name); System.out.println('Dog Breed: ' + dog.breed); dog.makeSound(); dog.fetch(); System.out.println(); // Polymorphism - Dog is treated as an Animal System.out.println('Another Dog Name: ' + anotherDog.name); // The makeSound() method in the Dog class is invoked anotherDog.makeSound(); // Casting to access the fetch() method specific to the Dog class ((Dog) anotherDog).fetch(); } }
Išvestis:
Animal Name: Generic Animal The animal makes a sound. Dog Name: Buddy Dog Breed: Labrador Retriever The dog barks. The dog fetches a ball. Another Dog Name: Max The dog barks. The dog fetches a ball.
Šiame pavyzdyje mes turime gyvūnų klasę kaip superklasę ir šunų klasę kaip poklasį. Šunų klasė išplečia gyvūnų klasę, užmegzdama ryšį. Animal klasė turi pavadinimo lauką ir makeSound() metodą, o šunų klasė turi papildomą veislės lauką ir nepaiso makeSound() metodo. „Dog“ klasėje taip pat pristatomas naujas metodas „fetch(). Pagrindiniu metodu sukuriame gyvūnų ir šunų klasių egzempliorius. Polimorfizmą demonstruojame priskirdami šuns objektą gyvūno nuorodai. Tada mes iškviečiame šių objektų metodus, parodydami, kaip poklasis paveldi superklasės laukus ir metodus. Galiausiai parodome gyvūno nuorodos grąžinimą atgal į šuns nuorodą, kad pasiektume šunų klasei būdingą fetch() metodą.
java pridėti eilutę
„Java“ ryšys yra pagrindinis objektinio programavimo aspektas, leidžiantis kurti klasių hierarchijas. Tai įgalina kodo pakartotinį naudojimą, polimorfizmą ir metodų nepaisymą, skatina geresnį programinės įrangos organizavimą ir išplėtimą. Suprasdami ir išnaudodami ryšį, kūrėjai gali sukurti patikimesnes ir lankstesnes „Java“ programas.