30/09/2018, 18:26

Thừa kế trong JAVA

em có đoạn code này:
‘’’

class Shape{
    public void draw(){
        System.out.println("Drawing a shape");
    }
}
class Retangle extends Shape{
    private int dai, rong;
    public Retangle(){
        dai = 1;
        rong = 1;
    }
    public void setX(int dai){
        if(dai > 0 && dai < 16)
            this.dai = dai;
        else if(dai <= 0)
            this.dai = 1;
        else
            this.dai = 15;
    }
    public int getX(){
        return dai;
    }
    public void setY(int rong){
        if(rong > 0 && rong < 16)
            this.rong = rong;
        else if(rong <= 0)
            this.rong = 1;
        else
            this.rong = 15;
    }
    public int getY(){
        return rong;
    }
    public void draw(){
        for(int i = 0; i < rong; i++){
            for(int j = 0; j < dai; j++){
                if(i == 0 || i == rong - 1)
                    System.out.print("*");
                else{
                    if(j == 0 || j == dai - 1)
                        System.out.print("*");
                    else
                        System.out.print(" ");
                }
            }
            System.out.print("
");
        }
    }
}
class RightTrangle extends Shape{
    private int cVuong;
    public RightTrangle(){
        cVuong = 1;
    }
    public void setCVuong(int cVuong){
        if(cVuong > 0 && cVuong < 21)
            this.cVuong = cVuong;
        else if(cVuong <= 0)
            this.cVuong = 1;
        else
            this.cVuong = 20;
    }
    public int getCVuong(){
        return cVuong;
    }
    public void draw(){
        for(int i = 0; i < cVuong; i++){
            for(int j = 0; j <= i; j++)
                System.out.print("*");
            System.out.print("
");
        }       
    }
}
class Artist{
    public void drawShape(Shape v){
        v.draw();
    }
}

public class BT3_10 {
    public static void main(String[] args) {
       Shape v = new Retangle();
       v.setX(); // error.
       
       
    }   
}

‘’’
tại sao dòng v.setX(); lại error ạ??? mong mọi người giúp…

Truong Pham viết 20:40 ngày 30/09/2018

Shape không có phương thức setX() dù đã được up casting sang Retangle nhưng v vẫn chỉ có thể gọi được các phương thức của Shape

vũ xuân quân viết 20:33 ngày 30/09/2018

Em đang làm theo dạng đa kế thừa trong Java phải không ?
Xem link dưới.

Theo em biết thì C++ là ngôn ngữ hỗ trợ đa kế thừa. Tuy Java không có tính này nhưng vẫn hỗ trợ phần nào. Mọi người cho em hỏi kỹ hơn về đa kế thừa trong java được không ạ? Ta có thể dùng nó khi nào? Dùng như thế nào? Nó có ưu nhược điểm gì? Tại sao chỉ dùng đơn kế thừa mà lại hạn chế đa kế thừa? Cho em xin cái ví dụ cụ thể ạ? Có phải extends thì kế thừa đơn còn implement có thể đa kế thừa không ạ? Em xin cảm ơn

Phan Thành Nam viết 20:35 ngày 30/09/2018

cảm ơn anh nhiều… giờ em mới biết nó là up casting em tìm tài liệu về up casting đọc cho hiểu hơn…

Bài liên quan
0