Zephyrnet Logosu

Java'da Örneklerle Polimorfizm – 2022

Tarih:

Polimorfizm, bir nesnenin farklı biçimler alma yeteneğidir. Java'da polimorfizm, bir sınıfın, yönteme iletilen nesnenin türüne bağlı olarak, bir yöntemin farklı uygulamalarını sağlama yeteneğini ifade eder.

Basitçe söylemek gerekirse, Java'daki polimorfizm, aynı eylemi birçok farklı şekilde gerçekleştirmemize izin verir. Birden fazla IS-A testinden geçebilen herhangi bir Java nesnesi, Java'da polimorfiktir. Bu nedenle, kendi türleri ve Object sınıfı için IS-A testini geçtiği için tüm Java nesneleri polimorfiktir.

Bu makale ayrıca Java'daki iki tür polimorfizmden bahsediyor: derleme zamanı polimorfizmi ve çalışma zamanı polimorfizmi, Java polimorfizmi örnekleri, yöntem aşırı yükleme, yöntem geçersiz kılma, java'da neden polimorfizm kullanılmalı, java programlama, ve daha fazlası.

Polymorphism is a feature of the object-oriented programming language, Java, which implies that you can perform a single task in different ways. In the technical world, polymorphism in Java allows one to do multiple implementations by defining one interface. 

  1. Polimorfizm nedir?
  2. Java'da Polimorfizm nedir?
  3. Polimorfizmin Gerçek Hayattan Örnekleri
  4. Polimorfizm Türleri
  5. Java'da Yöntem Aşırı Yüklemesi
  6. Java'da Yöntem Geçersiz Kılma
  7. Runtime Polymorphism in Java
  8. Compile-Time Polymorphism in Java
  9. Polymorphism in programming
  10. Polymorphism variables
  11. Java'da Polimorfizm neden kullanılır?
  12. Polimorfizmin Özellikleri
  13. Polimorfizm ile ilgili sorunlar
  14. Sonuç
  15. FAQs

Polimorfizm nedir?

Polimorfizm kelimesinin türetilmesi iki farklı Yunanca kelimeden gelir - poli ve morflar. "Poly" çok sayıda anlamına gelir ve "Morphs" formlar anlamına gelir. Yani polimorfizm, sayısız form anlamına gelir. Bu nedenle polimorfizm, Nesne Yönelimli Programlamanın en önemli özelliklerinden biridir.

Java'da Polimorfizm nedir?

Java'da çok biçimlilik tek bir eylemi farklı şekillerde gerçekleştiren görevdir.

So, languages that do not support polymorphism are not ‘Object-Oriented Languages’, but, ‘Object-Based Languages’. Ada, for instance, is one such language. Since Java supports polymorphism, it is an Nesne Yönelimli Dil.

Polymorphism occurs when there is inheritance, i.e. there are many classes that are related to each other.

miras Java'da güçlü bir özelliktir. Java Kalıtımı bir sınıfın başka bir sınıfın özelliklerini ve niteliklerini almasını sağlar. Java'daki polimorfizm, bu kalıtsal özellikleri farklı görevleri gerçekleştirmek için kullanmamıza izin verir. Böylece, aynı eylemi birçok farklı şekilde gerçekleştirmemizi sağlar.

Polimorfizmin Gerçek Hayattan Örnekleri

An individual can have different relationships with different people. A woman can be a mother, a daughter, a sister, a friend, all at the same time, i.e. she performs other behaviours in different situations.

The human body has different organs. Every organ has a different function to perform; the heart is responsible for blood flow, lungs for breathing, brain for cognitive activity, and kidneys for excretion. So we have a standard method function that performs differently depending upon the organ of the body. 

Java Örneğinde Polimorfizm

A superclass named “Shapes” has a method “area()”. Subclasses of “Shapes” can be “Triangle”, “circle”, “Rectangle”, etc. Each subclass has its way of calculating area. Using Inheritance and Polymorphism means, the subclasses can use the “area()” method to find the area’s formula for that shape.

class Shapes {
  public void area() {
    System.out.println("The formula for area of ");
  }
}
class Triangle extends Shapes {
  public void area() {
    System.out.println("Triangle is ½ * base * height ");
  }
}
class Circle extends Shapes {
  public void area() {
    System.out.println("Circle is 3.14 * radius * radius ");
  }
}
class Main {
  public static void main(String[] args) {
    Shapes myShape = new Shapes();  // Create a Shapes object
    Shapes myTriangle = new Triangle();  // Create a Triangle object
    Shapes myCircle = new Circle();  // Create a Circle object
    myShape.area();
    myTriangle.area();
    myShape.area();
    myCircle.area();
  }
}

Çıktı:

The formula for the area of Triangle is ½ * base * height
Dairenin alanı için formül 3.14 * yarıçap * yarıçaptır.

Ayrıca Oku: Java'da OOP kavramları

Polimorfizm Türleri

Java'da Polimorfizmi iki farklı yöntemle gerçekleştirebilirsiniz:

  1. Yöntem Aşırı Yükleme
  2. Yöntem Geçersiz Kılma

Java'da Yöntem Aşırı Yükleme nedir?

Yöntem aşırı yükleme aynı sınıfta aynı isimde birden fazla metot oluşturabilen ve tüm metotların farklı şekillerde çalıştığı süreçtir. Sınıfta aynı ada sahip birden fazla yöntem olduğunda yöntem aşırı yüklemesi oluşur.

Java'da Yöntem Aşırı Yükleme Örneği

class Shapes {
  public void area() {
    System.out.println("Find area ");
  }
public void area(int r) {
    System.out.println("Circle area = "+3.14*r*r);
  }

public void area(double b, double h) {
    System.out.println("Triangle area="+0.5*b*h);
  }
public void area(int l, int b) {
    System.out.println("Rectangle area="+l*b);
  }


}

class Main {
  public static void main(String[] args) {
    Shapes myShape = new Shapes();  // Create a Shapes object
    
    myShape.area();
    myShape.area(5);
    myShape.area(6.0,1.2);
    myShape.area(6,2);
    
  }
}

Çıktı:

Alan bul
Daire alanı = 78.5
Üçgen alanı=3.60
Dikdörtgen alan=12

Java'da Yöntem Geçersiz Kılma nedir?

Yöntem geçersiz kılma, alt sınıf veya bir alt sınıfın, üst sınıfta belirtilen yöntemle aynı yönteme sahip olduğu süreçtir.

Java'da Yöntem Geçersiz Kılma Örneği

class Vehicle{  
  //defining a method  
  void run(){System.out.println("Vehicle is moving");}  
}  
//Creating a child class  
class Car2 extends Vehicle{  
  //defining the same method as in the parent class  
  void run(){System.out.println("car is running safely");}  
  
  public static void main(String args[]){  
  Car2 obj = new Car2();//creating object  
  obj.run();//calling method  
  }  
}  

Çıktı:

Araba güvenli bir şekilde çalışıyor

Ayrıca, Java'daki Polimorfizm iki türe ayrılabilir, yani:

  1. Statik/Derleme Zamanı Polimorfizmi
  2. Dinamik/Çalışma Zamanı Polimorfizmi

Java'da Derleme Zamanı Polimorfizmi nedir?

Derleme Zamanı Polimorfizmi Java olarak da bilinir Statik Polimorfizm. Ayrıca, yönteme yapılan çağrı derleme zamanında çözümlenir. Derleme Zamanı polimorfizmi şu şekilde elde edilir: Yöntem Aşırı Yükleme. Bu tür polimorfizm şu yollarla da elde edilebilir: Operatör Aşırı Yüklemesi. Ancak Java, Operatör Aşırı Yüklemesini desteklemez.

Method Overloading is when a class has multiple methods with the same name, but the number, types, and order of parameters and the return type of the methods are different. Java allows the user freedom to use the same name for various functions as long as it can distinguish between them by the type and number of parameters. 

Java'da Derleme Zamanı Polimorfizmi Örneği

Java'da toplama yapacağız ve subtract() kullanarak derleme zamanı polimorfizmi kavramını anlayacağız. 

package staticPolymorphism; 
public class Addition 
{ 
void sum(int a, int b) 
{ 
int c = a+b; 
System.out.println(“ Addition of two numbers :” +c); } 
void sum(int a, int b, int e) 
{ 
int c = a+b+e; 
System.out.println(“ Addition of three numbers :” +c); } 
public static void main(String[] args) 
{ 
Addition obj = new Addition(); 
obj.sum ( 30,90); 
obj.sum(45, 80, 22); 
} 
}

Programın çıktısı şöyle olacaktır: 

İki sayının toplamı: 120 

Üç sayının toplamı: 147 

Bu programda, sum() yöntemi, farklı parametreler aracılığıyla iki türle aşırı yükleme yapar. 

Bu, aynı ada sahip birden çok yöntemi kullanarak çeşitli işlemleri gerçekleştirebileceğimiz Java'daki derleme zamanı polimorfizminin temel konseptidir.

Java'da Çalışma Zamanı Polimorfizmi nedir?

Çalışma zamanı polimorfizmi Java'da da popüler olarak bilinir Dinamik Bağlama veya Dinamik Yöntem Gönderimi. Bu süreçte, geçersiz kılınan bir yönteme yapılan çağrı, derleme zamanı yerine çalışma zamanında dinamik olarak çözümlenir. Çalışma zamanı polimorfizmini şu yolla elde edebilirsiniz: Yöntem Geçersiz Kılma.

Yöntem Geçersiz Kılma, bir alt sınıf veya bir alt sınıf, üst sınıf veya üst sınıf ile aynı ada, parametrelere ve dönüş türüne sahip bir yönteme sahip olduğunda yapılır; o zaman bu işlev, üst sınıftaki işlevi geçersiz kılar. Daha basit bir ifadeyle, eğer alt sınıf, üst sınıfta zaten mevcut olan bir yönteme tanımını sağlıyorsa; o zaman temel sınıftaki bu işlevin geçersiz kılındığı söylenir.

Ayrıca, çalışma zamanı polimorfizminin veri üyeleri aracılığıyla değil, yalnızca işlevler aracılığıyla elde edilebileceği belirtilmelidir. 

Geçersiz kılma, üst sınıfın bir referans değişkeni kullanılarak yapılır. Çağrılacak yöntem, referans değişkeni tarafından atıfta bulunulan nesneye göre belirlenir. Bu aynı zamanda olarak bilinir yukarıya yayın.

Upcasting, Parent sınıfın referans değişkeni alt sınıfın nesnesine atıfta bulunduğunda gerçekleşir. Örneğin:

class A{} 
class B extends A{}  
A a=new B(); //upcasting

Java'da Çalışma Zamanı Polimorfizmi Örnekleri

Örnek 1:

Bu örnekte, bir üst sınıf Hayvan ve üç alt sınıf, Otçullar, Etçiller ve Omnivorlar yaratıyoruz. Alt sınıflar, üst sınıfı genişletir ve onun eat() yöntemini geçersiz kılar. Eat() metodunu Parent sınıfının yani Animal sınıfının referans değişkeni ile çağıracağız. Temel sınıf nesnesine atıfta bulunduğundan ve temel sınıf yöntemi, üst sınıf yöntemini geçersiz kılar; temel sınıf yöntemi çalışma zamanında çağrılır. Derleyici değil Java Sanal Makinesi veya JVM yöntemin çağrılmasını belirlediğinden, bu nedenle çalışma zamanı polimorfizmidir.

class Animal{  
  void eat(){
System.out.println("Animals Eat");
}  
}  
class herbivores extends Animal{  
  void eat(){
System.out.println("Herbivores Eat Plants");
} 
  }
class omnivores extends Animal{  
  void eat(){
System.out.println("Omnivores Eat Plants and meat");
} 
  }
class carnivores extends Animal{  
  void eat(){
System.out.println("Carnivores Eat meat");
} 
  }
class main{
  public static void main(String args[]){ 
    Animal A = new Animal();
    Animal h = new herbivores(); //upcasting  
	Animal o = new omnivores(); //upcasting  
    Animal c = new carnivores(); //upcasting  
    A.eat();
    h.eat();
    o.eat();  
    c.eat();  
  
  }  
}  

Çıktı:

Hayvanlar yer
Otçullar Bitki Yiyor
Omnivorlar Bitkileri ve Etleri Yiyorlar
Etçiller et yerler

Örnek 2:

Bu örnekte, bir üst sınıf Hillstations ve üç alt sınıf Manali, Mussoorie, Gulmarg yaratıyoruz. Alt sınıflar, üst sınıfı genişletir ve konumu() ​​ve ünlüsü() yöntemini geçersiz kılar. Location() ve popularfor() yöntemini Parent sınıfından, yani Hillstations sınıfından çağıracağız. Temel sınıf nesnesine atıfta bulunduğundan ve temel sınıf yöntemi, üst sınıf yöntemini geçersiz kılar; temel sınıf yöntemi çalışma zamanında çağrılır. Ayrıca, yöntem çağrılmasını derleyici değil Java Sanal Makinesi veya JVM belirlediğinden, bu çalışma zamanı polimorfizmidir.

class Hillstations{  
  void location(){
System.out.println("Location is:");
}  
void famousfor(){
System.out.println("Famous for:");
}  

}  
class Manali extends Hillstations {  
  void location(){
System.out.println("Manali is in Himachal Pradesh");
}  
void famousfor(){
System.out.println("It is Famous for Hadimba Temple and adventure sports");
}  
  }
class Mussoorie extends Hillstations {  
  void location(){
System.out.println("Mussoorie is in Uttarakhand");
}  
void famousfor(){
System.out.println("It is Famous for education institutions");
}  
  }
class Gulmarg extends Hillstations {  
  void location(){
System.out.println("Gulmarg is in J&K");
}  
void famousfor(){
System.out.println("It is Famous for skiing");
}  
  }
class main{
  public static void main(String args[]){ 
    Hillstations A = new Hillstations();
    Hillstations M = new Manali();

    Hillstations Mu = new Mussoorie();

    Hillstations G = new Gulmarg();

    A.location();
A.famousfor();

M.location();
M.famousfor();

Mu.location();
Mu.famousfor();

G.location();
G.famousfor();
  }  
}  

Çıktı:

konum:
Ünlü için:
Manali, Himaşal Pradeş'te
Hadimba Tapınağı ve macera sporları ile ünlüdür.
Mussoorie, Uttarkand'da.
Eğitim kurumlarıyla ünlüdür.
Gulmarg, J&K'de çalışıyor
Kayak yapmakla ünlüdür.

Java'da çalışma zamanı polimorfizmi örneği

Car ve Innova olmak üzere iki sınıf oluşturacağız, Innova sınıfı car sınıfını genişletecek ve run() yöntemini geçersiz kılacaktır.

class Car 
{ 
void run() 
{ 
System.out.println(“ running”); 
} 
}
class innova extends Car 
{ 
void run(); 
{ 
System.out.println(“ running fast at 120km”); 
} 
public static void main(String args[]) 
{ 
Car c = new innova(); 
c.run(); 
} 
} 

Aşağıdaki programın çıktısı; 

120 km'de hızlı koşuyor. 

Java'da çalışma zamanı polimorfizmi için başka bir örnek

Şimdi, veri üyeleri aracılığıyla çalışma zamanı polimorfizmine ulaşıp ulaşamayacağımızı kontrol edelim. 

class car 
{ 
int speedlimit = 125; 
} 
class innova extends car 
{ 
int speedlimit = 135; 
public static void main(String args[]) 
{ 
car obj = new innova(); 
System.out.println(obj.speedlimit);
}

Aşağıdaki programın çıktısı şöyle olacaktır: 

125 

Bu açıkça, veri üyeleri aracılığıyla Çalışma Zamanı polimorfizmine ulaşamayacağımız anlamına gelir. Kısacası, veri üyeleri değil, bir yöntem geçersiz kılınır.

Çok düzeyli kalıtımla çalışma zamanı polimorfizmi

class grandfather 
{ 
void swim() 
{ 
System.out.println(“ Swimming”); 
} 
} 
class father extends grandfather 
{ 
void swim() 
{ 
System.out.println(“ Swimming in river”); 
} 
} 
class son extends father 
{ 
void swim() 
{ 
System.out.println(“ Swimming in pool”);
} 
public static void main(String args[]) 
{ 
grandfather f1,f2,f3; 
f1 =new grandfather(); 
f2 = new father(); 
f3 = new son(); 
f1.swim(); 
f2.swim(); 
f3.swim(): 
} 
} 

Aşağıdaki programın çıktısı şöyle olacaktır: 

Yüzme, nehirde yüzmek, havuzda yüzmek

Çok düzeyli kalıtım örneğiyle başka bir çalışma zamanı polimorfizmi

class soundAnimal 
{ 
public void Sound() 
{ 
System.out.println("Different sounds of animal"); }
} 
class buffalo extends soundAnimal 
{ 
public void Sound() 
{ 
System.out.println("The buffalo sound- gho,gho"); } 
} 
class snake extends soundAnimal 
{ 
public void Sound() 
{ 
System.out.println("The snake sound- his,his"); } 
} 
class tiger extends soundAnimal
{ 
public void Sound() 
{ 
System.out.println("The tiger sounds- roooo, rooo"); } 
} 
public class Animal Main 
{ 
public static void main(String[] args) 
{ 
soundAnimal Animal = new soundAnimal(); soundAnimal buffalo = new buffalo(); 
soundAnimal snake = new snake(); 
soundAnimal tiger = new tiger(); 
Animal.Sound(); 
buffalo.Sound();
snake.Sound(); 
tiger.Sound(); 
} 
} 

Aşağıdaki programın çıktısı; 

Bufalo sesi - gho, gho 

Yılan sesi- onun, onun 

Kaplan sesi- roooo, roooo 

Çalışma zamanı ve derleme zamanı polimorfizmi hakkında bir fikriniz olduğunu umarız.

Polimorfik Alt Tipler

Alt tip temelde, bir alt tipin başka bir tipin alt tipi olarak hizmet edebileceği anlamına gelir, kulağa biraz karmaşık mı geliyor? 

Bunu bir örnek yardımıyla anlayalım:

Rastgele şekiller çizmemiz gerektiğini varsayarsak, 'shape' adında bir sınıfı draw() metodu ile tanıtabiliriz. Draw() öğesini daire, kare, dikdörtgen, yamuk, vb. gibi diğer alt sınıflarla geçersiz kılarak, öğeleri depolanan referansların 'şekil' alt sınıf referanslarına atıfta bulunacağı 'şekil' türünde bir dizi tanıtacağız. Bir dahaki sefere, Draw()'u çağıracağız, tüm şekil örnekleri Draw() metodu çağrılacak.

Bu Alt Tip polimorfizmi, genellikle, üst tahmine ve geç bağlanmaya dayanır. Kalıtım hiyerarşisini alt türden üst türe çevirdiğiniz bir atama, üst türe dönüştürme olarak adlandırılır.

Nihai olmayan örnek yöntemleri çağırmak için geç bağlamayı kullanırız. Kısacası, bir derleyici herhangi bir argüman kontrolü, tip kontrolü, yöntem çağrısı vb. gerçekleştirmemeli ve her şeyi çalışma zamanında bırakmalıdır. 

Programlamada Polimorfizm Nedir?

Programlamada polimorfizm, birden çok farklı türü temsil etmek için tek bir sembolün kullanılması olarak tanımlanır.

Polimorfizm Değişkenleri Nedir?

A polimorfik değişken yürütme sırasında farklı türlerdeki değerleri tutabilen bir değişken olarak tanımlanır.

Java'da Polimorfizm neden kullanılır?

Java'daki polimorfizm, aynı ada sahip birçok farklı türde işlevi doğru şekilde işleyebilen bir yöntem yazmayı mümkün kılar. Polimorfizm kullanarak da kodumuzda tutarlılık kazanabiliriz.

Java'da Polimorfizmin Avantajları

  1. Kodun yeniden kullanılabilirliğini sağlar. Yazılan, test edilen ve uygulanan sınıflar birden çok kez yeniden kullanılabilir. Ayrıca, kodlayıcı için çok zaman kazandırır. Ayrıca, orijinal kodu etkilemeden kodu değiştirebilir.
  2. Birden çok veri değerini depolamak için tek bir değişken kullanılabilir. Üst sınıftan alt sınıfa miras aldığınız bir değişkenin değeri, o değişkenin üst sınıftaki değeri değiştirilmeden değiştirilebilir; veya diğer alt sınıflar.
  3. Daha az kod satırıyla, programcının kodda hata ayıklaması kolaylaşır.

Polimorfizmin Özellikleri

Polimorfizm, Yöntem Aşırı Yükleme ve Yöntem Geçersiz Kılma dışında birçok başka özelliğe sahiptir. Onlar içerir:

  • zorlama
  • Dahili Operatör Aşırı Yüklemesi
  • Polimorfik Değişkenler veya Parametreler

1. Zorlama

Zorlama, bir tür nesneyi dolaylı olarak farklı türden yeni bir nesneye dönüştürmekle ilgilenir. Ayrıca bu, koddaki yazım hatalarını önlemek için otomatik olarak yapılır. 

gibi programlama dilleri C, java, vb., değerin bir veri türünden başka bir veri türüne dönüştürülmesini destekler. Veri türü dönüşümleri örtülü ve açık olmak üzere iki türdendir. 

Örtük tür dönüştürme programda otomatik olarak yapılır ve bu tür dönüştürmeye zorlama da denir. 

Örneğin, bir işlenen bir tamsayıysa ve diğeri kayan sayıysa, derleyici tür hatasını önlemek için tamsayıyı dolaylı olarak kayan değere dönüştürür.

Örnek:

class coercion {

  public static void main(String[] args) {
    Double area = 3.14*5*7;
System.out.println(area);
String s = "happy";
int x=5;
String word = s+x;
System.out.println(word);

  }
}

Çıktı:

109.9
happy5

2. Dahili Operatörün Aşırı Yüklenmesi

Operatör Aşırı Yüklemesinde, bir operatör veya sembol, giriş bağlamına veya işlenenlerin türüne bağlı olarak birden fazla şekilde davranır. Statik polimorfizmin bir özelliğidir. Java, kullanıcının bir işlecin farklı işlenenler için nasıl çalıştığını tanımlayabildiği C++ gibi kullanıcı tanımlı işleç aşırı yüklemesini desteklemese de, Java'nın dahili olarak işleçleri aşırı yüklediği birkaç örnek vardır.

Operatörün aşırı yüklenmesi, operatörü tercihinize göre kullanma konseptidir. Bu nedenle, bir operatör sembolü veya yöntem adı, gereksinimlere göre 'kullanıcı tanımlı' bir tür olarak kullanılabilir. 

Örneğin, sayıların eklenmesi (aynı veri tipi) veya iki veya daha fazla dizginin birleştirilmesi için '+' kullanılabilir.

+ durumunda, ekleme ve ayrıca birleştirme için kullanılabilir.

Örneğin:

class coercion {

  public static void main(String[] args) {
    
String s = "happy";
String s1 = "world";
int x=5;
int y=10;

System.out.println(s+s1);
System.out.println(x+y);

  }
}

Çıkış:

mutlu Dünya
15

Benzer şekilde operatörler! &, ve | ayrıca mantıksal ve bitsel işlemler için aşırı yük konumundadır. Her iki durumda da argümanın türü, operatörün nasıl yorumlayacağına karar verecektir.

 3. Polimorfik Değişkenler veya Parametreler

Java'da, nesne veya örnek değişkenleri polimorfik değişkenleri temsil eder. Bunun nedeni, bir sınıfın herhangi bir nesne değişkeninin kendi sınıfları ve alt sınıfları ile bir IS-A ilişkisine sahip olabilmesidir.

Polimorfik Değişken, yürütme sırasında farklı türlerdeki değerleri tutabilen bir değişkendir.

Parametrik polimorfizm, sınıf bildirimi yapılırken bir alan adının farklı türlerle, bir yöntem adının ise farklı parametreler ve dönüş türleriyle ilişkilendirilebileceğini belirtir.

Örneğin:

class Shape
{
public void display()
{
System.out.println("A Shape.");
}
}
class Triangle extends Shape
{
public void display()
{
System.out.println("I am a triangle.");
}
}
class Main{
public static void main(String[] args)
{
Shape obj;
obj = new Shape();
obj.display();
obj = new Triangle();
obj.display();
}
}

Çıktı:

Bir şekil.
Ben bir üçgenim.

Burada obj nesnesi polimorfik bir değişkendir. Bunun nedeni, üst sınıfın aynı nesnesinin üst sınıfa (Shape) ve alt sınıfa (Üçgen) atıfta bulunmasıdır. 

Polimorfizm ile ilgili sorunlar 

Pek çok avantajın yanı sıra, polimorfizmin birkaç dezavantajı da vardır.

  • Polimorfizm, uygulama sırasında oldukça zordur.
  • Kodun okunabilirliğini azaltma eğilimindedir.
  • Gerçek zamanlı olarak da bazı ciddi performans sorunlarını gündeme getiriyor.

Downcasting Sırasında Tip Tanımlaması 

Downcasting, bir çocuk tipine atama veya ortak bir tipi tek bir tipe atama olarak adlandırılır.

Bu nedenle, alt türlerin davranışlarına erişmemiz veya davranışlarını anlamamız gerektiğinde aşağı değerlendirmeyi kullanırız. 

Örnek, 

Bu hiyerarşik bir örnektir 

Yiyecek> Sebze> Ladyfinger, Domates 

Burada, domates ve kedi dili iki alt sınıftır. 

Downcasting'de nesnelerin türünü daraltıyoruz, bu da ortak türü bireysel türe dönüştürdüğümüz anlamına geliyor. 

Sebze sebze = yeni Domates(); 

Tomato castedTomato = (Domates) sebze; 

Burada doğrudan java'da mümkün olmayan ortak bir türü bireysel bir türe, üst sınıftan alt sınıfa aktarıyoruz.

Derleyiciye, nesnenin çalışma zamanı türünün ne olduğunu açıkça söyleriz.

Kırılgan temel sınıf sorunu 

Kırılgan temel sınıf sorunu, temel bir mimari sorundan başka bir şey değildir. 

Bazen bir üst sınıfın uygunsuz tasarımı, bir üst sınıfın alt sınıfının üst sınıfı bazı öngörülemeyen şekillerde kullanmasına yol açabilir. 

Kalıtımın kırılganlığı, tüm kriterler karşılandığında bile kodların bozulmasına yol açacaktır. 

Bu mimari problem, nesne yönelimli programlama sistemlerinde ve dillerde kırılgan bir temel sınıf problemi olarak adlandırılır. 

Temel olarak, kırılgan taban sorununun nedeni, temel sınıfın geliştiricisinin alt sınıf tasarımı hakkında hiçbir fikrinin olmamasıdır. Bu sorun için henüz bir çözüm yok. 

Sonuç

Java'da polimorfizm ve onu nasıl kullandığımız ve bunlarla ilgili problemler hakkında temel bir fikre sahip olduğunuzu umarız. 

Dolayısıyla, bu bizi Java'da Polimorfizm hakkındaki blogun sonuna getiriyor. Ayrıca, programlama ve diğer ilgili kavramlar hakkında daha fazla bilgi edinmek için şu adresteki kurslara göz atın: Büyük Öğrenim Akademisi ve Yazılım Mühendisliğinde PG Programları.  

Ayrıca, Mülakatlara hazırlanıyorsanız, bunlara göz atın Java için Mülakat Soruları bir profesyonel gibi asmak için.

[Gömülü içerik]

Bu nedenle, öğrenme yolculuğunuzu durdurmayın. Ayrıca, becerilerinizi geliştirmeyi ve kendinizi yenilemeyi unutmayın. Keşfetmeye ve öğrenmeye devam edin.

Sık Sorulan Sorular

Örnek ile polimorfizm nedir?

Tek bir eylemi çeşitli şekillerde gerçekleştirmemizi sağlayan OOP özelliklerinden biri, Java'da polimorfizm olarak bilinir. Örneğin, sound() yöntemine sahip bir Animal sınıfımız var. Bu genel bir sınıftır ve bu nedenle ona Meow, Oink, Roar, vb. gibi bir uygulama veremeyiz. 

4 polimorfizm türü nelerdir?

Dört tür polimorfizm şunlardır:
– Çalışma zamanı veya Alt tip polimorfizmi
– Aşırı yükleme veya Parametrik polimorfizm
– Derleme zamanı veya Ad hoc polimorfizmi
– Döküm veya Zorlama polimorfizmi

OOP'lerde polimorfizm nedir?

OOP veya nesne yönelimli programlamanın temel kavramlarından biri olan polimorfizm, belirli bir şeyin farklı biçimlerde meydana geldiği durumları tanımlar. Bilgisayar biliminde polimorfizm, aynı arayüz üzerinden farklı nesne türlerine erişmemizi sağlayan bir kavramı tanımlar.

OOP'de geçersiz kılma nedir?

Nesne yönelimli programlamada geçersiz kılma, bir alt sınıfın veya alt sınıfın, üst sınıflarından veya üst sınıflarından biri tarafından zaten sağlanan bir yöntemin belirli bir uygulamasını sağlamasına izin veren bir özelliktir.

Geçersiz kılma ve aşırı yükleme nedir?

Aynı sınıftaki iki veya daha fazla yöntem aynı ada sahipse ancak farklı parametrelere sahipse bu, Aşırı Yükleme olarak bilinir. Geçersiz Kılma durumunda, aynı üst sınıfta ve alt sınıfta bir yöntem imzası (ad ve parametreler) bulunur.

spot_img

En Son İstihbarat

spot_img