Como usar extends

Minha dúvida é básica, mas não consigo entender como fazer.
Tenho um aplicativo, o Programa3.class ,que usa outras duas classes, quero dizer que ele extends a Programa2.class e ao Programa1.class.

No Programa3.java eu não sei como fazer ele extender a duas outras classes. Então, na declaração da classe, eu fiz assim:

import javax.swing.*;
import java.awt.*;

public class Programa3 extends Programa2, Programa1
{

// o resto do código

}

Mas, dá erro e mostra que não posso fazer aquele extends duplo. Mas se eu tenho que usar essas duas classes, como faço então? Será que é instanciando dentro do próprio código do Programa3.java ?
Dá uma ajuda aí, pessoal, esclarecendo isso para mim.

Abraço, amigos.
Luca

Java não suporta herança múltipla. Você só pode extender uma classe por vez:

ClasseFilha extends ClassePai

Você pode tentar extender diversas classes implementando interfaces:

ClasseFilha implements ClassePai1, ClassePai2, ClassePai3

Você não pode estender mais de uma classe em Java.
Mas tá estranho… como são as classes Programa1 e Programa2, e o que você quer fazer na Programa3?

Ao Rafael e ao Roger,

Aí pessoal, obrigado pela força, ajudaram muito.

Mas tem uma coisa aí que eu não sabia, eu pensava que implements só era para interfaces, tipo assim:

implements ActionListener, KeyListener

mas não sabia que poderia usar implements em classes, foi novidade pra mim, estou estudando Java há pouco tempo.

Mas, respondendo ao Roger, no Programa1.class eu apenas configuro a janela principal do aplicativo, e no Programa2.class eu configuro formato de casas decimais para usar no Programa3.class. Eu sei que poderia fazer tudo no próprio Programa3, mas eu preciso aprender a usar duas ou três classes em uma outra classe. Minha pergunta é nesse sentido, como eu faço isso?

Abraço, amigos.
Luca

Voce nao pode usar implements em classes, somente em interfaces. Uma possivel solução seria fazer a Programa2 estender Programa1 e Programa3 estender Programa2 (isso, claro, se essa herança não for ferir os conceitos de OO).

o Luca…

Pq vc não cria na Programa2.class um metodo passando um parametro e retorna ele formatado ??

dai vc pode herdar a Programa1.class na Programa3.class e instancia o objeto Programa2 na Programa3.class

é uma ideia :!:

Ao Jok3r,

Eu acho que você falou exatamente o que eu estou precisando aprender. mas eu estou há tão pouco tempo nisso que as dúvidas são muitas. Mas eu pergunto, para usar qualquer variável do Programa1.class ou do Programa2.class eu posso fazer isto diretamente no Programa3.class sem precisar fazer extender . Tipo assim: suponha que eu tenha um método criado lá no Programa2.class e desejo usá-lo no Programa3.class, o método se chama calculaPreço(). Então eu pergunto, posso chamar esse método no Programa3, sem precisar extender a Programa2? Posso fazer assim, direto:

Programa2.calculaPreço(),

mas eu pergunto sem precisar extender a Programa2?

Qualquer dica de alguém será muito bem vinda, tô precisando melhorar meus conhecimentos. Abraço, pessoal.
Luca

Você pode criar uma instância do Programa2 e chamar o método a partir deste objeto criado, na classe Programa.

Por exemplo:

[code]public class Programa2{
public int calculaPreco(int custo ){
return custo*2;
}

}

public class Programa{
public static void main(String args[]){
Programa2 p2=new Programa2();
int preco=p2.calculaPreco(100);
System.out.println(“O preco do produto =”+preco);
}
}[/code]

O Roger respondeu ai pra vc…

vc instancia a classe Programa2 “Programa2 c = new Programa2();”

e depois chama seus metodos… “c.calculaPreco();”, vc tbm pode chamar direto os atributos da classe caso eles sejam public, tipo la na classe Programa2 vc tem um atribuo “public preco1;” vc pode chamar direto o atributo “c.preco1;” caso o atributo seja public e assim por diante… de uma estudada em public, private, protected e package pra ter um maior exclarecimento…

:!:

Ao Roger e Jok3r,

Com a ajuda de vocês ficou bem claro isso pra mim. Eu entendi então, que não preciso extender nada, basta instanciar um objeto em relação a outra classe Programa2 e chamar o método com o objeto instanciado. Entedi assim, e vou fazer.

Mas ainda fica uma dúvida, e se o que eu quero usar lá da Programa2.class não estiver em um método, mas dentro do construtor do Frame. Suponha que eu tenha uma variável tipo double, assim:

double custo = 34.6;

mas esta variável não está em nehum método, ela foi configurada dentro do construtor da classe Programa2, e eu quero usá-la com o valor que ela tem no Programa3.class, eu pergunto, nesse caso também, é só instanciar um objeto lá no Programa3 e chamar a variável direto? É assim que faz:

Programa2 double custo = new Programa2();
double preço = double custo + 14;

Será que é isso?

Cara, eu fiz uma pergunta no post aí de cima, mas me dei conta de que o construtor também é um método(), e se ele é método deve seguir a regra geral, ou seja, não importa se a variável foi declarada em qual método, basta citar lá na outra classe o método, seja construtor ou não. Será que é isso, ou tô viajando legal?

Desejo agradecer ao Alexandre Borges a sua dica, mas está um pouco difícil de eu poder fazer isto porque me falta ainda conhecimentos, entendi a lógica do que você propõe, mas não saberia fazer. Mas vou procurar entender melhor. Te agradeço muitoa ajuda.

Abraço a todos.
Luca