2016-04-03 13 views
1

Bağlam: Farklı paketlerden iki sınıf (İkinci pakette ikinci sınıf, birinci pakette sınıfı miras alır) miras yoluyla bağlanır ve üst sınıftan alt sınıfa bir yöntem çağrısı yapar.Paketler arasında kalıtım mümkün mü? Ayrıca bunları nasıl derleriz?

Yaptıklarımı:

iki farklı not defteri dosyalarında iki sınıfları Yazılı ve denemeye peş peşe infaz ama mümkün değildi bana yürütmek için ve hata mesajları gösteren ve aşağıda benim sınıfları şunlardır:

package first; 

import second.Sample1; 

public class Sample { 

public static void main(String a[]) 
{ 
    Sample1 s=new Sample1(); 
    s.dis(1); 
} 


package second; 

import first.Sample; 

public class Sample1 extends Sample{ 
public void dis(int i) 
{ 
System.out.println(i); 
} 
} 

Eclipse'de, çıktıyı 1 olarak veriyor, ancak bu kodları notepad dosyaları kullanarak hangi sırayla çalıştırmam gerekiyor. Bu sınıfları hata iletileri vererek herhangi bir sırada derlediğini gözlemledik.

Çok teşekkürler. :)

+0

Kalıtımınız herhangi bir _do_ değil. Ne bekliyordun? Not; Dairesel bir bağımlılığa sahip oldukları için bunları _together_ derlemelisiniz. –

+0

Eclipse'de 1 çıktı veriyor ... Lütfen tüm açıklamayı okuyun. Teşekkürler. – Vishwak

+0

Gerçekten, System.out.println (1) 'başka ne üretecek? Bu örnekte mirasın ne beklediğini soruyordum. –

cevap

0

Döngüsel paket bağımlılığı oluşturdunuz, bu iyi bir fikir değil.

Temel sınıfınız Sample'un alt sınıfları hakkında herhangi bir şey bilmek zorunda kalmaz ve bunu yaptığında, genellikle kötü tasarım belirtisidir.

main yöntemini Sample1 yöntemine taşıyın ve Sample sınıfının second.Sample1 ürününü içe aktarmasına gerek kalmaz.

+0

Ve sonra 'Sample' silinsin mi? Buradaki asıl sorun, bunun gerçekten anlamlı bir şekilde miras örneğinin olmamasıdır. –

+0

@BoristheSpider Bu soruya yazılan gibi, 'Sample1', 'Sample''den herhangi bir eyaleti veya davranışı devralmadığını kabul ediyorum, ancak mirasın mantıklı olduğu durumlar için genel bir cevap verdim. – Eran

+0

Örnek1'in herhangi bir durumu/davranışı Örnek'den almasını sağlayabilirim, ancak benim endişem değil. Sadece bilmek, onları nasıl derleriz? – Vishwak

İlgili konular