• Sepet

Java’da Polimorfizm Nasıl İşler?

Profesyonel Java Sanal Kursu – 1. Bölüm‘den örnek alıntıdır.

Share Button

Özcan Acar

Özcan Acar 1974 İzmir doğumludur. İlk ve orta öğrenimini İzmir’de tamamladı. Almanya'daki lise öğreniminden sonra doksanlı yılların sonunda Almanya’nın Darmstadt şehrinde bulunan FH Darmstadt üniversiteden bilgisayar mühendisi olarak mezun oldu.

KurumsalJava.com, SmartHomeProgrammer.com ve Mikrodevre.com adresleri altında blog yazıyor. Kurduğu BTSoru.com'da ona yazılımla ile ilgili sorularınızı yöneltebilirsiniz. Pratik Programcı Yayınları bünyesinde Pratik Spring, Pratik Agile ve Pratik Git ismini taşıyan kitapları bulunmaktadır. 21.12.2009 tarihinde Java Champion olarak seçildi.

Son Yazıları (hepsini göster)

    Yazıyı Oku
    1. volkan

      Merhaba Ozcan,

      Sana bir sorum olacakti bu konu hakkinda….! Asagida iki sinifim var polymorphism1(ana sinif) ve polymorphism2(alt sinif) adinda…..

      public class polymorphism1 {
      		public void mesaj(){    								 
      			System.out.println("polymorphism1");
      			}
      		public static void cokBicim(polymorphism1 object){     
      			object.mesaj();									
      			}
      
      	public static void main(String[] args){										        	   	
      	polymorphism1 obj1 = new polymorphism1();
      	polymorphism1.polymorphism2 obj2 = new polymorphism1().new polymorphism2();
      		cokBicim(obj1);
      		cokBicim(obj2);
      	}
      
      
      
      		public class polymorphism2 extends polymorphism1 {				  
      						public void mesaj(){
      							System.out.println("polymorphism2");
      						}
      }
      }
      

      bu isliyor ….. fakat bir sinif daha eklemek istiyorum … oda polymorphism3 extends polymorphism2 sinifi olsun. Metot yine ayni ve main de obj3 ile bu metotu cagirmak istiyorum fakat hata veriyor ;(

      Acaba 2.ci alt sinif yazilamaz mi? veya enfazla kac sinif ic ice yazabilirim boyle?

      saygilarimla,
      Volkan

    2. Özcan Acar

      Nasil bir hata aliyorsun?

    3. volkan

      No enclosing instance of type polymorphism1 is available due to some intermediate constructor invocation

    4. Özcan Acar

      Su sekilde yapmalisin. Sonuc itibari ile üst bir siniftaki metodu kosturarak, bu metodun alt siniftaki implementasyonuna erisim olup, olmadigini kontrol etmek istiyorsun. Bu sebepten dolayi nesnenin tanimlanma sekli üst sinif veri tipinde olmali.

      public class polymorphism1 {
          public void mesaj() {
              System.out.println("poli1");
          }
      
          public static void cokBicim(final polymorphism1 object) {
              object.mesaj();
          }
      
          public static void main(final String[] args) {
              final polymorphism1 obj1 = new polymorphism1();
              final polymorphism1 obj2 = new polymorphism1().new polymorphism2();
              final polymorphism1 obj3 = new polymorphism1().new polymorphism3();
              cokBicim(obj1);
              cokBicim(obj2);
              cokBicim(obj3);
          }
      
          public class polymorphism2 extends polymorphism1 {
              @Override
              public void mesaj() {
                  System.out.println("poli2");
      
              }
          }
      
          public class polymorphism3 extends polymorphism1 {
              @Override
              public void mesaj() {
                  System.out.println("poli3");
      
              }
          }
      }
      
    5. volkan

      evet boyle calistirdim …. fakat simdi baska bir uygulama gerceklestirmek istiyorum… Hersey ayni… fakat siniflar direk polymorphism1 sinifini kalitim almak yerine, birbirlerine ust sinif olarak kalitim olsun istedim… boyle nasil yaparim?