Help with Java inheritance, inherit variables

0

Today I come because I have a problem and I have been breaking my head for almost the entire morning and I have not achieved anything. What happens is that in the following code I want to inherit the variables X, Y (with their numbers) but it does not leave me since I do not have access to variables in private.

class Cuadrilatero {

private double P1;
private double P2;
private double P3;
private double P4;

private double x1,x2,x3,x4,y1,y2,y3,y4;


public Cuadrilatero() {
}

public Cuadrilatero(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4){
    setP1(x1, y1);
    setP2(x2, y2);
    setP3(x3, y3);
    setP4(x4, y4);
}

//creación de los puntos

public void setP1(double x1, double y1){
    this.x1=x1;
    this.y1=y1;
}


public void setP2(double x2, double y2){
    this.x2=x2;
    this.y2=y2;
} 

public void setP3(double x3, double y3){
    this.x3=x3;
    this.y3=y3;
}


public void setP4(double x4, double y4){
    this.x4=x4;
    this.y4=y4;
}

}

This is the main class and where I want to inherit is as follows.

class Trapezoide extends Cuadrilatero{

private double baseMe;
private double baseMa;
private double altura;


    public Trapezoide(){
    }

    public Trapezoide(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4){
        super(x1,  y1,  x2,  y2, x3,  y3, x4,  y4);
    }

    public Trapezoide(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4,double baseMe, double baseMa, double altura){
        setBaseMe(baseMe);
        setBaseMa(baseMa);
        setAltura(altura);
    }

    public void setBaseMe(double baseMe){
        this.baseMe=baseMe;
    }

    public double getBaseMe(){
        baseMe=x3-x2;
        return baseMe;
    }

    public void setBaseMa(double baseMa){
        this.baseMa=baseMa;

    }

    public double getBaseMa(){
        baseMa=x4-x1;
        return baseMa;
    }

    public void setAltura(double altura){
        this.altura=altura;
    }

    public double getAltura(){
        altura=y2-y1;
        return altura;
    }

    public double getArea(){
        double area;
        area= ((getBaseMa() + getBaseMe()) + getAltura())/2;
        return area;
    }

    public String toString(){
        return "El area del [Trapezoide] es: " + getArea() + " cuadrados";
    }

}

How could I do it to inherit that? thanks

    
asked by tarygagagaga 08.12.2017 в 16:56
source

1 answer

1

Use the access modifier protected when declaring properties in the parent class so you can use them in your child classes (in case you want that to be their behavior), when using private in this case, you are simply restricting access to those properties so that only the parent class can access them. After inheriting the parent class with its protected properties you can easily access them through this .

A simple example:

class Perro {
    protected String nombre;
    protected String raza;

    public Perro(String nombre, String raza) {
        this.nombre = nombre;
        this.raza = raza;
    }
}

class PastorAleman extends Perro {
    public PastorAleman(String nombre) {
        super(nombre, "Pastor Alemán");
    }

    public String getInfo() {
        return this.nombre + " es un " + this.raza;
    }
}

public class Main {
    public static void main(String[] args) {
        PastorAleman aquiles = new PastorAleman("Aquiles");
        System.out.println(aquiles.getInfo());
    }
}

// Console output:
// Aquiles es un Pastor Alemán

Alternatively you could encapsulate the private properties of the parent class and access them through their respective getter and setter .

    
answered by 08.12.2017 в 18:22