Hvad er forskellen mellem polymorfisme og arv?


Svar 1:
  • polymorfi

Polymorfisme betyder, at den samme ting findes i mange former for at udføre forskellige handlinger.

Der er to typer polymorfisme:

1. Kompilér tid eller statisk: Dette kan opnås ved hjælp af metodeoverbelastning. Dette er opkaldskompileringstid eller statisk, fordi kompilatoren bestemmer, hvilke metoder der skal kaldes under sammenstilling af selve koden. Overbelastning af metoden ville ske inden for en klasse. For at opnå overbelastning af metoden er vi nødt til at erklære og definere flere metoder med samme navn, men med forskellige underskrifter som antallet af parametre, type parametertype osv.

Eksempel:

pakke PolymorphismExample;
offentlig klasse StaticPolymorphism
{

public void getArea (int side)
{
System.out.println ("Area of ​​Square:" + side * side);
}
public void getArea (int længde, int bredde)
{
System.out.println ("Område med rektangel:" + længde * bredde);
}

public static void main (String [] args)
{
StaticPolymorphism obj = new StaticPolymorphism ();
obj.getArea (5);
obj.getArea (5, 3);
}
}

2. Kørsel eller dynamisk: Dette kan opnås ved at bruge metodeoverskridelse. Dette kaldes runtime eller dynamisk, fordi compiler bestemmer ved runtime, hvilke metoder der skal kaldes. Fremgangsmådeoverskridelse kan udføres ved hjælp af arv og upcasting-teknikker. I disse metoder med samme navn og underskrift kan implementeres mange gange for at nå forskellige mål og funktionalitet.

Eksempel:

pakke PolymorphismExample;
offentlig klasse DynamicExample
{
offentligt tomrum (int side)
{
System.out.println ("Area of ​​Square:" + side * side);
}
}

pakke PolymorphismExample;
public class DynamicExampleResult udvider DynamicExample
{
offentligt tomrumsområde (int-radius)
{
System.out.println ("Cirkelområde:" + (3,14 * radius));
}
public static void main (String [] args)
{
DynamicExample obj = new DynamicExampleResult (); // Upcasting
obj.area (5); // Den kalder ovenstående metode nævnt i klassen 'DynamicExampleResult'.

// Hvis vi kommenterer metoden area () i denne klasse, kalder den område () fra
                Superklasse (DynamicExample).
}
}

Upcasting: Upcasting er en proces til at kalde den tilsidesatte metode ved hjælp af referenceklassen i superklassen.

Klasseforælder
{
    /// Kodelinjer.
}
Klassebarn udvider forælder
{
      Parent obj = new Child (); // Upcasting child object to parent
      Child objb = nyt klasseforælder () // Fejl
}
  • Arv

Arv fungerer på forældre-barn koncept. Som barn får nogle funktioner fra deres forældre og nogle af dets egne. Arv betyder at erhverve egenskaberne for forældreklassen i børneklassen ved hjælp af 'udvider' nøgleord.

'Udvides' betyder at øge eller udvide funktionen i forældreklasse ved hjælp af underordnede klasser.

Eksempel:

pakke InheritanceExample;
Company class detaljerede virksomheder
{
// Definition af forældreklasse, der har nogle datamedlemmer og metoder.
String CompanyName = "XYZ PVT. Ltd.";
String CompanyAddress = "Sec-58, New Delhi.";
String CompanyPhone = "02145879352";

public void displayCompanyDetails ()
{
System.out.println (CompanyName);
System.out.println (CompanyAddress);
System.out.println (CompanyPhone);
}
}

pakke InheritanceExample;
public class EmployeeInfo udvider CompanyDetails
{
// Definition af barneklasse, der udvider forældrene, så vi også kan bruge metoder fra forældreklasse.
String EmployeeCode = "12345";
String EmployeeDept = "Salg";

public void displayEmployeeInfo ()
{
System.out.println (EmployeeCode);
System.out.println (EmployeeDept);
}
public static void main (String [] args)
{
EmployeeInfo obj = new EmployeeInfo ();
obj.displayCompanyDetails (); // Metode fra forældreklasse.
obj.displayEmployeeInfo (); // Metode fra børneklasse.
}
}

Hovedideen bag arven er som:

  1. For at øge genanvendelsen af ​​koden og funktionen. For at understøtte runtime-polymorfisme

Arvstyper: 1. Forældreklasse i en enkelt klasse Barn udvider forælder 2. Multilevel Class SupParent Class Forælder udvider SupParent Class Child udvider forælder 3. Hierarkisk klasse forælder

Class Child_1 udvider forældreklasse Child_2 udvider forælder 4. Multiple (understøttes ikke i JAVA) Klasse forælder_1 Klasse forælder_2 Klasse barn udvider forælder_1, overordnede_2 5. Hybrid (understøttes ikke i JAVA) Klasse SupParent klasse forælder_1 udvider SupParent klasse Forælder_2 udvider SupParent Class Child udvider klasse Forælder_1, klasse forælder_2

Bemærk: For at undgå tvetydighed og kompleksitet Læs mere ...

Hjem - Alt i én blogs

Java | Objektorienteret programmering (OOP) -koncept - Alt i én blogs

Excel-arkiver - Alt i én blogs

JIRA Arkiv - Alt i én blogs

Agile Methodology Archives - Alt i én blogs

Følg os på YouTube:

allinoneblogs Af Ashok