Problemas passagem de valores

Queria saber porque não estou conseguindo herdar os valores de uma classe, somar elas em outra e executar tudo isso no Main.

Recebe os 2 numeros a serem somados:

import java.util.Scanner;
public class Numeros {

     protected double num1;
     protected double num2;

    Scanner input = new Scanner(System.in);

    public void inserirNum(){

        System.out.println("");
        num1 = input.nextDouble();

        System.out.println("");
        num2 = input.nextDouble();

    }

    public double getNum1() {
        return num1;
    }


    public void setNum1(double num1) {
        this.num1 = num1;
    }



    public double getNum2() {
        return num2;
    }


    public void setNum2(double num2) {
        this.num2 = num2;
    }



}

Efetua a soma :
Obs: Para somar posso chamar as variaveis diretamente ou tem que ser pelo get ?

public class Soma extends Numeros {
    
    protected double resultado;
    Numeros a = new Numeros();

    public void soma(){

       resultado= a.getNum1()+a.getNum2(); // ou a.num1+a.num2 ?
       System.out.println("O resultado da soma é : " +resultado);


    }

}

Edit:
Falta alguma coisa no main ?

[code] public static void main(String[] args) {
// TODO code application logic here

    Numeros num = new Numeros();
    Soma soma = new Soma();

    num.inserirNum();
    soma.soma();
    


}[/code]

E o Main chamando os metodos.

Só para deixar claro, sou novo com linguagens e estou estudando por conta propia. O código é “besta” mas estou simplesmente praticando.

Desde ja agradeço a possivel ajuda.

DavidsonLss bem vindo ao GUJ.

Referente a sua duvida, você pode acessar a variavel tanto pelo metodo get’s como pela variavel, já que você declarou ela como protected.
O mais comum seria, declarar a variavel como private e os metodos get’s/set’s como public…

É interessante ler mais a respeito de modificadores.
A regra básica é assim:

  • private : Sem acesso
  • Sem modificadores: Acesso apenas as classes do mesmo pacote (No seu caso é os metodos gets/sets)
  • protected: Por herança ou classes no mesmo pacote (No caso suas variaveis)
  • public: Acesso de qualquer classe e qualquer pacote

Att

Bem, quando você extende uma classe que tenha atributos ou métodos (public, protected) você poderá
acessá-los diretamente.
Não sei se você já tem, mas baixe algum livro ou apostila que será bem mais fácil de você aprender
tanto programação, quanto a lógica. Já que você é auto-didata.

[quote=wellington.nogueira]tente assim…

[code]public static void main(String[] args) {
Soma soma = new Soma();

soma.inserirNum();   
soma.soma();   

} [/code][/quote]

Deu na mesma, o resultado só da 0.0.

Mesmo assim, obrigado :wink:

Olá DavidsonLss!
Eu fiz deste jeito e deu certo. Não sei explicar. rs

[code]
package pacotes;

import java.util.Scanner;

public class Numeros {

protected double num1;
protected double num2;

Scanner lerTeclado = new Scanner(System.in);

public void inserirNum() {
	System.out.print("Digite um número: ");
	num1 = lerTeclado.nextDouble();
	
	System.out.print("Digite um número: ");
	num2 = lerTeclado.nextDouble();
}

public double getNum1() {
	return num1;
}

public void setNum1(double num1) {
	this.num1 = num1;
}

public double getNum2() {
	return num2;
}

public void setNum2(double num2) {
	this.num2 = num2;
}

}[/code]

package pacotes;

public class Soma extends Numeros {

	protected double resultado;
		
	public void somar(Numeros numeros){
		resultado = numeros.getNum1() + numeros.getNum2();
		System.out.println("O resultado da soma é:" + resultado);
				
	}
	
}
package pacotes;

public class Programa {

	public static void main(String[] args) {
		Numeros numeros = new Numeros();
		Soma soma = new Soma();
		
		numeros.inserirNum();
		soma.somar(numeros);
	}
	
}

Talvez o pessoal do GUJ possa ajudar!

DavidsonLss,

O problema é que você está criando um objeto do tipo Numeros na sua classe Soma. A sua classe já herda de Numeros, você não precisa desse objeto. Observe:

public class Soma extends Numeros {
    
    protected double resultado;

    public void soma(){
       resultado= getNum1() + getNum2(); //estes métodos estão definidos na superclasse
       System.out.println("O resultado da soma é : " + resultado);
    }
}

Da forma como estava sendo feito, o objeto onde você chama o método inserirNum() era diferente do objeto de onde você lia os números inseridos (getNum1() e getNum2()). Por isto o retorno era 0.

Abraço

tente assim…

[code]public static void main(String[] args) {
Soma soma = new Soma();

soma.inserirNum();   
soma.soma();   

} [/code]