olá pessoal! Estou com uma dúvida aqui, como faço para instanciar um objeto de uma subclasse?
Estou fazendo assim mas está com erro:
package raio;
public class Raio {
public static void main(String[] args) {
raio1 perimetro = new raio1(); //diz que falta o construtor...
}
}
class raio1{
int r1;
double r2;
byte r3;
float r4;
long r5;
public raio1 (int x){r1 = x;}
public raio1 (double x){r2 = x;}
public raio1 (byte x){r3 = x;}
public raio1 (float x){r4 = x;}
public raio1 (long x){r5 = x;}
}
Sim falta o construtor default
é só adcionar
public raio1 (){}
Sua classe raio1 NÃO possui nenhum construtor sem PARÂMETROS.
Note que você criou apenas construtores que recebam um PARÂMETRO.
Obs.: NÃO é permitido criar duas classes (classe Raio e raio1) dentro de um mesmo arquivo.
[quote=furutani]Sim falta o construtor default
é só adcionar
public raio1 (){}
hummm deu certo hehe! vlw! jaja coloco outra dúvida sobre este programa!
saquei, não sabia disso, mas e como que funciona uma subclasse??? Achei que uma subclasse era várias classes dentro do mesmo arquivo!!
É permitido sim.
O que não pode ter é duas classes public dentro de um mesmo arquivo E você tentar executar a classe que não tem o mesmo nome que o arquivo.
Saquei então!
Mas pq quando eu coloco este método ele diz que o retorno é vazio?
class raio1{
double r;
public raio1 (int x){r = x;}
public raio1 (double x){r = x;}
public raio1 (byte x){r = x;}
public raio1 (long x){r = x;}
public raio1 (){ return (double) 2*Math.PI*r;} // metodo type is void
public void raio1 (){}
quero colocar os métodos para calcular o perimetro da circunferencia dentro desta classe, mas ele diz que está void… pq?
arrumei tava aki:
public double raio1 (){ return (double) 2*Math.PI*r;}// agora deu certo!
Pessoal, como que eu faço para o usuário entrar com o valor do raio e empregar este valor nos métodos?? eu devo usar a classe Scanner??
package raio;
public class Raio {
public static void main(String[] args) {
raio1 redondo = new raio1();
System.out.printf("informe o raio: ");
}
}
class raio1{
double r;
public raio1 (int x){r = x;}
public raio1 (double x){r = x;}
public raio1 (byte x){r = x;}
public raio1 (long x){r = x;}
public raio1 (float x){r = x;}
public double perimetro(){return (double) 2*Math.PI*r;} // metodo type is void
public double AreaCirculo(){return (double) Math.PI*r*r;}
public double VolumeEsfera(){return (double) (4*Math.PI*r*r*r)/3;}
public raio1 (){}
}
fiz assim mas está com erro, ele inicia com 0
[code]
public static void main(String[] args) {
raio1 redondo = new raio1();
System.out.println("informe o raio: " + redondo.r);
System.out.println("Valor do perímetro: \n" + redondo.perimetro() +
"valor da área: \n" + redondo.AreaCirculo() +
"valor do volume da esfera: " + redondo.VolumeEsfera());
}
}
class raio1{
double r;
public raio1 (int x){r = x;}
public raio1 (double x){r = x;}
public raio1 (byte x){r = x;}
public raio1 (long x){r = x;}
public raio1 (float x){r = x;}
public double perimetro(){return (double) 2Math.PIr;} // metodo type is void
public double AreaCirculo(){return (double) Math.PIrr;}
public double VolumeEsfera(){return (double) (4Math.PIrrr)/3;}
public raio1 (){}
}[/code]
então pessoal o problema é este aki:
"Construa uma subclasse que receba um valor raio, que pode ser passado por byte, int, long, float, double. crie metodos distintos p/ retornar em double o perimetro da circunferencia, a area do circulo e o volume da esfera…
É permitido sim.
O que não pode ter é duas classes public dentro de um mesmo arquivo E você tentar executar a classe que não tem o mesmo nome que o arquivo.[/quote]
Confirmando o que o Bruno informou, acrescenta-se:
[quote]
“vc poderá colocar todas as classes em um unico arquivo, contanto q tenha
apenas uma (ou nenhuma) classe publica, e que essa classe(publica) tenha o
mesmo nome do Arquivo!”
Elvis
[/quote] Íntegra
um exemplo:
[code]import java.util.Scanner;
class Test {
public static void main(String[] args) {
System.out.println(“Informe o raio:”);
Scanner scanner = new Scanner(System.in);
Raio raio = new Raio(Double.parseDouble(scanner.next())); // aqui pode ocorrer uma exceção se o valor digitado não for numérico ou tiver virgula no lugar do ponto flutuante.
System.out.println("Valor do perímetro: " + raio.getPerimetro());
System.out.println("valor da área: " + raio.getAreaCirculo());
System.out.println("valor do volume da esfera: " + raio.getVolumeEsfera());
}
}
class Raio {
private double raio;
public Raio() {
}
public Raio(double raio) {
this.raio = raio;
}
public double getRaio() {
return raio;
}
public double getPerimetro() {
return (double) 2 * Math.PI * raio;
}
public double getAreaCirculo() {
return (double) Math.PI * raio * raio;
}
public double getVolumeEsfera() {
return (double) (4 * Math.PI * raio * raio * raio) / 3;
}
}[/code]
Notei que o problema envolve subclasses.
Quando falamos de subclasses, normalmente isso está ligado ao conceito de herança, a subclasse sendo a filha da superclasse. No teu caso acho que teria uma superclasse FormaRadial, e subclasses Circulo e Esfera. Pergunte p/ o professor.
Uma classe dentro de outra o nome dado é classe interna.
Só mais uma dica de convenção… Use Iniciais Maiúsculas para nomes de Classes…
No mais… vc está quase lá… O que vc precisa ???
1 - Receber a entrada do usuário;
2 - Enviar essa entrada para o construtor do Raio1;
3 - Calcular os valores do que vc quer de fato e exibir na tela;
Só está faltando acertar o passo 1…
Falows