Dúvida classe abstrata

6 respostas
L

estou criando uma classe abstrata chamada TrianguloEquilatero com o atributo lado privado e que criar alguns métodos:
altura: lado*Math.sqrt(3/2)
area: lado * altura/2
perimetro: 3 * lado

mas dá um erro nos métodos olhem a classe:

abstract class TrianguloEquilatero{
private float lado;

//construtor
public TrianguloEquilatero(float lado)
{this.lado = lado;}
//Encapsulamento
public float getLado()
{return (this.lado);}
public void setLado(float lado)
{this.lado = lado;}
//Métodos
public void altura(double altura)
{this.altura = this.lado *Math.sqrt((3)/2);}

}//class

logo quando crio esse método dá esse erro:
***Semantic error: no acessible field named “altura” was found in type “Triangulo Equilatero”

como faço, pois a classe abstrata não retorna nada, então criei um void e é só p ara colcoar a fórmula dentro para usar em outra classe que vou criar e não quero usar "altura " como atributo lá em cima, quero usar como parâmerto no método, o que está errado?e outra coisa coloquei outro parentese dentro do número 3 pois só ele está na raiz e o dois está só dividindo, está certo?

6 Respostas

TiagoFoil

acho q vc deveria ter declarado “altura” assim como vc declarou “lado”, la encima…

L

mas ela está dentro do parâmetro, a qeustão pede assim para criar apenas o atributo lado

_fs

Se você quer que as classes filhas implementem o método altura(), pode declará-lo abstrato, assim elas serão obrigadas a fazê-lo por contrato.

T

“altura” não é um atributo, mas deve ser calculado a partir do atributo “lado” usando a fórmula dada.

Exemplo:

public double altura () {
    return lado*Math.sqrt(3/2);
}
L

isso mesmo acabei de fazer assim e deu certo!

H

Fernando,

Não sei se já conseguiu resolver seu problema com o atributo “altura”, mas de qualquer forma, caso ainda precise da solução…
O erro de semântica acontece porque você está se referenciando ao atributo “altura” utilizando this, ou seja, tentando acessar o atributo no escopo da classe. Pra acessar o parâmetro “altura”, utilize simplesmente “altura”, sem this.

Espero ter entendido corretamente a ajuda.

Abraço…

Criado 8 de maio de 2006
Ultima resposta 8 de mai. de 2006
Respostas 6
Participantes 5