Úvod do statické vazby a dynamické vazby

Jedná se o dva typy vazby. Vazba označuje asociaci volání metody k tělu metody. Ve statické vazbě se veškeré přiřazení a deklarace dějí v době kompilace. Mají několik výhod a nevýhod nad sebou. Ve výkonu je statické vázání lepší než dynamické vázání metod a proměnných. Statická vazba je také známá jako časná vazba. Jak všichni víme, metody Vazba jako statická, soukromá a finální se děje během kompilačního času, zatímco v dynamickém vazebním kompilátoru nerozhoduje, která metoda bude volána.
Níže uvedený příklad je lepší příklad pro pochopení

Příklad č. 1

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
static void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
static void start() (
System.out.println("Bike will start now..");
)
)

Ve výše uvedeném příkladu vidíme, jak má statická vazba zabránit přetěžování třídy.

Níže uvedený příklad zobrazí, jak dynamické vázání funguje, zde metoda podřízené třídy potlačuje nadřazenou třídu

Příklad č. 2

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
void start() (
System.out.println("Bike will start now..");
)
)

V tomto příkladu není statická metoda přítomna v metodě start pod metodou rodičovská a podřízená třída, takže metoda se stejným názvem přepíše metodu nadřazené třídy. To se děje kvůli tomu.

Na výše uvedeném snímku obrazovky je uveden výstup programu.

Proč statické vázání a dynamické vázání?

  1. Je nutné, aby programování zvládlo různé situace pomocí statické a dynamické vazby.
  2. Vazba kompilace je známá jako časná vazba, tj. Znamená to, kdy je třeba deklarovat věci v okamžiku kompilace (na samém začátku) provádění programu. V Dynamic Binding se Binding provádí v době běhu, která je známá také jako Late Binding.
  3. Metoda & proměnné, definované jako statické, konečné a soukromé, se týká statického vázání, zatímco virtuální metody, ke kterým se vázání odehrává za běhu, se nazývají dynamické vázání.
  4. Metoda Přetížení / přetížení operátora používá statické vazby, takže je jedním z nejlepších příkladů, zatímco Overriding používá dynamiku, takže je znám jako nejlepší příklad dynamického vázání.
  5. V tomto případě se skutečný objekt nikdy nepoužívá, zatímco skutečný objekt používaný v dynamické vazbě.

Příklady

V níže uvedeném příkladu vidíme, jak dochází ke statické vazbě

Příklad č. 1

// Implementace rodičovské třídy

class Colony(
//Static method to start the electricity of the Colony
public static void start electricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//Static method to start the electricity of Building
public static void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

Ve výše uvedeném programu je col referenční proměnnou třídy typu Colony směřující k objektu třídy Colony. col2 je také referenční proměnná typové třídy Colony, ale ukazuje na objekt třídy Building. Když kompilace probíhá, zatímco kompilátor vazby nikdy nekontroluje typ objektu, pouze zkontroluje typ referenční proměnné.

Ve výše uvedeném programu, například col .startElectricity (), kompilátor zkontroluje, zda definice metody start elektřiny () existuje ve třídě Colony, nebo ne, protože col je typ kolonie. Podobně pro volání metody col2.startElectricity () kontroluje, zda metoda start elektřiny () je přítomna ve třídě Colony, nebo ne, protože col2 je také typ třídy Colony. Nekontroluje, na který objekt col, col2 směřuje. tento typ vazby je známý jako statická vazba.

Výstup:

Výše uvedený výstup programu ukazuje, jak jsou statické členy použity k zabránění nadřazení.

Příklad č. 2

V níže uvedeném příkladu vidíme, jak se dynamické vázání vyskytuje během doby běhu

// Implementace rodičovské třídy

class Colony(
//method to start the electricity of the Colony
void startElectricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//method to start the electricity of Building
void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

Ve výše uvedeném programu je vše stejné jako ve statickém ukázkovém programu, ale v tomto příkladu je odstraněn člen metody „statický“. Během toho bude vyvolána metoda hlavního objektu, na který ukazuje col.startElectricity (). Zatímco pro volání col2.startElectricity () bude volána metoda hlavního objektu, na který ukazuje col2. Tento typ vazby je známý jako Dynamic Binding.

Výstup:

Výhoda

  1. Statické vázání je efektivnější a rychlejší než dynamické. Tento kompilátor vazby ví, že tyto typy metod nelze přepsat.
  2. Ve statickém vázání se typ používá, zatímco dynamické vázání používá objekty pro vazby.
  3. Jednou z hlavních výhod Dynamic Binding je flexibilita, díky flexibilitě může jediná funkce zpracovávat různé typy objektů za běhu.
  4. Ve statické vazbě jsou všechny informace potřebné před kompilační dobou, zatímco v dynamické vazbě zůstávají žádné informace dostupné před dobou běhu.
  5. Statické vazby lze provádět pomocí běžných funkcí, zatímco dynamické vazby lze dosáhnout pomocí virtuálních funkcí.

Závěr

Toto jsou některé z důležitých konceptů objektově orientovaného programování. Vazba se vztahuje na provedení kódu. Stává se to v době kompilace, zatímco Dynamic Binding se děje v době běhu. Definice, deklarace a rozsah deklarace, to jsou tři důležité pilíře statické vazby, zatímco v dynamické vazbě název vazby a doba trvání vazby.

Doporučené články

Toto je průvodce statickou vazbou a dynamickou vazbou. Zde diskutujeme úvod, použití a výhody. Další informace naleznete také v dalších navrhovaných článcích -

  1. Druhy webhostingu
  2. Přetížení a přetečení v Javě
  3. AngularJS směrnice
  4. Polymorfismus v Javě
  5. Statická metoda JavaScript Pracovní | Příklady

Kategorie: