Reduzir métodos

Eu tenho duas classes que derivam de uma classe mãe e ambas possuem 2 métodos iguais, como é que eu posso fazê-los antes na classe mãe ? os métodos em questão são o showAnswer() e o execute()

class mãe

[code]
package trab13;

public abstract class ArithmeticQuestion extends Question{

protected int oper1;
protected int oper2;

public ArithmeticQuestion(int points){
	super(5);
}

protected static int random(int li,int ls ) {
	return (int) Math.floor(Math.random() * (ls-li+1) +li);
}

public void reformulate() {
	oper1 = random(1,9);
	oper2= random(1,9);
}



}[/code]

subclass 1

package trab13;

import java.util.*;

	

public class AddQuestion extends ArithmeticQuestion {


	public AddQuestion() {
		super(5);
	}

	public void showQuestion() { 
		System.out.print(oper1 + "+" + oper2 + " = " );		
	}
	
	public void showAnswer() { 
		showQuestion();		
		System.out.println( execOper() );
	}
	public int execute () {
		showQuestion();		
		Scanner s = new Scanner(System.in);
        	if ( s.nextInt() == execOper() ) return this.getPoints();
       		System.out.print(" R: "); showAnswer();
        	return 0;		
	}	
	protected int execOper() { return oper1 + oper2; }
}

subclass2

package trab13;
import java.util.*;

public class MultQuestion extends ArithmeticQuestion {
	
	public MultQuestion() {
		super(5);
	}

	public int execute () {
		showQuestion();		
		Scanner s = new Scanner(System.in);
        	if ( s.nextInt() == execOper() ) return this.getPoints();
       		System.out.print(" R: "); showAnswer();
        	return 0;
	}
     
	protected int execOper() { return oper1 * oper2; }
	
	
	public void showAnswer() { 
		showQuestion();		
		System.out.println( execOper() );
	}
	
	public void showQuestion() { 
		System.out.print(oper1 + "*" + oper2 + " = " );		
	}
        	
	
}

Não sei se é a melhor alternativa, mas eu faria o seguinte:

  • colocaria os métodos showAnswer e execute na classe mãe
  • colocaria os métodos que são usados dentro destes dois (e que são implementados nas classes filho de maneira diferente) na classe mãe como métodos abstratos :grin:

qual seria a vantagem disso ? eu keria era mesmo poder eliminar os metodos nas classes filho ficar só com eles na classe mãe visto k são iguais…

eu keria era mesmo poder eliminar os metodos nas classes filho ficar só com eles na classe mãe visto k são iguais
- colocaria os métodos showAnswer e execute na classe mãe 

isso já faz o que vc pediu.

- colocaria os métodos que são usados dentro destes dois (e que são implementados nas classes filho de maneira diferente) na classe mãe como métodos abstratos

isso é preciso poque vc usa os métodos showQuestion e execOper (diferentes em cada classe) dentro dos métodos que serão colocados na classe mãe. Então, p/ essa classe mãe compilar vc precisa colocá-los nela e sobrescrevê-los nas classes filho.