2016-04-12 17 views
0

Ben java geçersiz kılma yöntemi göstermek için çevre ve dikdörtgen bulmak için basit kodu yazarken bu sorunu vardı anladım. aynı alt sınıf yöntemindeki alanı (uzunluk * genişlik) döndürebilir miyim?Alt sınıftaki bir yöntemle ve alt sınıftaki yöntemle nasıl geçersiz bir yöntemden dönebilirim?

package override; 

class perimeter{ 
int length,breadth; 

perimeter(){length = breadth = 0;}//default constructor 

perimeter(int length, int breadth){ 
this.length = length; 
this.breadth = breadth; 
} 

int show(int length, int breadth){ 
    return 2*(length + breadth); 
} 
} 

class area extends perimeter{ 
area(int length, int breadth){ 
    super(length,breadth); 

} 


int show(int length, int breadth){ 
    return super.show(length, breadth); 
    // how can i return this too? : return length * breadth; 
} 

} 

public class overrideshapes { 
public static void main(String args[]){ 
    area shape1 = new area(5,10); 
    System.out.println(""+ shape1.show(shape1.length,shape1.breadth)); 


} 

} 
+1

Yapamazsınız ve yapmak istediğiniz şey mantıklı değildir. Neden bölge 'çevre 'uzanıyor? Alanlar perimetre değildir. (Ayrıca, sınıf isimleri Pascal-case: 'Area',' Perimeter, 'OverrideShapes') –

+0

Evet. alan, büyük olasılıkla perimetreleri uzatamaz. Ancak program sadece yöntemi geçersiz kılmaktı. Ancak çözümü buldum. Teşekkürler! –

cevap

0

Ne yapmaya çalıştığınızı bilmiyorum, ancak sorunuzu düşündüğüm birkaç şeyi açıklayacağım.

Farklı çokgenler için alanları ve alanları hesaplamak istediğinizi düşünüyorum, böylece en iyi yol bir Arayüz oluşturmaktır, bunun gibi bir şey.

public Interface Calculate { 
    public int calculateArea(int length, int width); 
} 

Sonra örneğin, poligon göre birçok clase içinde, sizin arabirimini uygulamak gerekir:

public class Square implements Calculate { 

    @Override 
    public int calculateArea(int length, int width){ 
     return length*width; //Because this is the way you calculate square areas 
    } 
} 

Yani çokgenler için @Override ek açıklama kullanarak arabirim yöntemi "calculateArea" uygulamak zorunda Bu yüzden her bir çokgen kendi alanını nasıl hesaplayacağını bilir.

Size yardımcı olur umarım.

+0

Yup. bu çalışıyor! teşekkür ederim! –

İlgili konular