2010-08-17 34 views
31

Tôi có một lớp học như sau:Gọi một constructor lớp cơ sở từ lớp có nguồn gốc trong Java

public class Polygon extends Shape{ 

    private int noSides; 
    private int lenghts[]; 

    public Polygon(int id,Point center,int noSides,int lengths[]) { 
     super(id, center); 
     this.noSides = noSides; 
     this.lenghts = lengths; 
    } 
} 

Bây giờ một đa giác đều là một đa giác có tất cả các bên đều bình đẳng. Điều gì sẽ là nhà xây dựng của đa giác thường xuyên của tôi?

public Regularpolygon extends Polygon{ 

//constructor ??? 
} 
+1

Đó là tốt đẹp mà bạn chấp nhận thế này. Nhưng trước đây bạn đã hỏi thêm câu hỏi. Nếu bạn không thể tìm thấy chúng, chỉ cần nhấp vào bất kỳ nơi nào tên của bạn xuất hiện dưới dạng một liên kết (ví dụ: ở trên thanh hoặc trong hộp 'đã hỏi 'ngay tại đây), thì bạn sẽ đến [trang tiểu sử] của bạn (http: //stackoverflow.com/users/419373/akshay). Bạn có thể tìm thấy tất cả lịch sử của mình ở đó, bao gồm các câu hỏi bạn đã hỏi trước đây. PS: đăng ký tài khoản của bạn sẽ tốt đẹp, nếu không bạn sẽ không thể đăng nhập cùng một tài khoản tại các trình duyệt/PC khác. – BalusC

Trả lời

50
public class Polygon extends Shape {  
    private int noSides; 
    private int lenghts[]; 

    public Polygon(int id,Point center,int noSides,int lengths[]) { 
     super(id, center); 
     this.noSides = noSides; 
     this.lenghts = lengths; 
    } 
} 

public RegularPolygon extends Polygon { 
    private static int[] getFilledArray(int noSides, int length) { 
     int[] a = new int[noSides]; 
     java.util.Arrays.fill(a, length); 
     return a; 
    } 

    public RegularPolygon(int id, Point center, int noSides, int length) { 
     super(id, center, noSides, getFilledArray(noSides, length)); 
    } 
} 
2

constructor của bạn nên được

public Regularpolygon extends Polygon{ 

public Regularpolygon (int id,Point center,int noSides,int lengths[]){ 
super(id, center,noSides,lengths[]); 

// YOUR CODE HERE 

} 

} 
+5

Tôi đã phải -1 cho vô nghĩa về nó là thực hành mã hóa tốt để cung cấp một constructor no-arg trong lớp cơ sở. –

1
class Foo { 
    Foo(String str) { } 
} 

class Bar extends Foo { 
    Bar(String str) { 
     // Here I am explicitly calling the superclass 
     // constructor - since constructors are not inherited 
     // you must chain them like this. 
     super(str); 
    } 
} 
+0

Tôi nghĩ câu hỏi là khác nhau. Bạn bằng cách nào đó bị mất điểm. –

Các vấn đề liên quan