Jump to content
bmd

[Ajuda] Classes Abstratas

Recommended Posts

bmd

Boas Tardes,

Estou com um problema, tenho que utilizar uns métodos que recebem como parâmetros, dois objectos do tipo de uma classe abstracta.

Ora como não consigo instância nenhum objecto dessa classe abstracta, posso posso utilizar esse método?

Abraço a toda a comunidade portuguesa de programadores :D

Share this post


Link to post
Share on other sites
brunoais

Instancias uma das classes que estende a classe abstrata


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
aladino77

Essa classe abstracta tem alguma subclasse concreta?

Essa superclasse abstracta tem mesmo que ter pelo  menos uma subclasse concreta. Senao não dá pra invocar esse método.

Share this post


Link to post
Share on other sites
KTachyon

Essa superclasse abstracta tem mesmo que ter pelo  menos uma subclasse concreta. Senao não dá pra invocar esse método.

Não é obrigatório. Existem classes abstractas que são distribuídas sem subclasses concretas.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
aladino77

Não é obrigatório. Existem classes abstractas que são distribuídas sem subclasses concretas.

Certo, as classes abstratas  só estão lá por causa do polimorfismo. De, qualquer maneira, estava a falar na invocação do método e não na sua definição. Pra esse método ser invocado tem que ser via uma subclasse concreta.

Tomemos o exemplo

public abstract class A {
   private int i;
   public A(int i) { this.i = i; }
   public int getI() {return i;}
}

public class B extends A {
   public B(int i) {super(i);}
}

public class C {
   private int k;
   public C() { k = 0; }
   public int soma(A um, A dois) { // Método para o bmd (o user que criou este post)
       k = um.getI() + dois.getI();
    }

   public static void main(String args[]) {
       C c = new C();
       c.soma(new A(5), new B(7)); // é um erro A é uma classe abstrata
       c.soma(new B(5), new B(7)); // Ok é disto q estou a falar

   }
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.