Arraylist, dúvida básica

Tenho uma classe abstrata Professor e 2 por via de herança, como faço pra botar estas duas em uma arraylist sendo que a Professor é abstrata ?

algo do tipo?

			ArrayList<? extends Professor> a ;

Num sei se isso foi uma pergunta ou uma solução, mas explicando melhor:

Tenho a classe CadastroProfessor

Que vai ficar a arraylist

nesta array tenho que ter os objetos que instanciam as classes:

Professor extends ProfessorIntegral e Professor extends ProfessorHorista

Fiz prova disso, naum consegui fazer e to curioso pra saber como se faz

Exemplo basico

import java.util.ArrayList;

public class Try {
	public static void main(String[] args) {
		ArrayList<A> list = new ArrayList<A>();
		Try t = new Try();
		list.add(t.new B());
		list.add(t.new C());
	}

	private abstract class A {

	}

	private class B extends A {

	}

	private class C extends A {

	}
}

Você quis dizer :

ProfessorIntegral extends Professor e ProfessorHorista extends Professor

certo? Ou você está procurando por herança multipla?

Isso mesmo, 2 classes distinta, mas 2 heranças da mesma classe professor, tentarei usar o exemplo que o amigo postou

Jovem, seria no caso ProfessorX extends Professor
ProfessorY extends Professor
ai meu jovem os metodos abstratos q estao no Professor tem q ser implementados nos seus “filhos”
se nao o ProfessorX e o ProfessorY
agora no CadastroProfessor
vc vai criar uma lista mas eh o seguinte, vc n pode fazer uma lista generica de professor e passar o outros professores para ela, pq Professorx eh um Professor, mas Professorx n eh Professory, intão minha dica e fazer uma lista para cada tipo de professor, e tratalas separadamente. uma outra opçao eh vc fazer uma lista de cada um e jogar em uma lista generia professor, nesse caso vc pode, mas ai, quando vc for usar a msma, por exemplo um for, vc soh vai poder usar parametros que o professor tem, e nao os parametros diferentes implementados em x ou y
espero q eu tenha t ajudado em algo flws

No meu exemplo estou usando classes internas mas é façil mudar.

[quote=Pedro Java]Jovem, seria no caso ProfessorX extends Professor
ProfessorY extends Professor
ai meu jovem os metodos abstratos q estao no Professor tem q ser implementados nos seus “filhos”
se nao o ProfessorX e o ProfessorY
agora no CadastroProfessor
vc vai criar uma lista mas eh o seguinte, vc n pode fazer uma lista generica de professor e passar o outros professores para ela, pq Professorx eh um Professor, mas Professorx n eh Professory, intão minha dica e fazer uma lista para cada tipo de professor, e tratalas separadamente. uma outra opçao eh vc fazer uma lista de cada um e jogar em uma lista generia professor, nesse caso vc pode, mas ai, quando vc for usar a msma, por exemplo um for, vc soh vai poder usar parametros que o professor tem, e nao os parametros diferentes implementados em x ou y
espero q eu tenha t ajudado em algo flws[/quote]

Só um exemplo do que ele quer explicar:

import java.util.ArrayList;

public class Try {
	public static void main(String[] args) {
		Try t = new Try();
		ArrayList<Professor> list = new ArrayList<Professor>();
		Professor b = t.new ProfY();
		Professor c = t.new ProfX();
		list.add(b);
		list.add(c);
		for(Professor temp : list)
			System.out.println(temp.materia());
		//Sabemos que a posição 0 pertence à um ProfY
		//Mas a lista armazena professores então só os metodos de professores podem ser chamados
		//list.get(0).getS(); Não funciona pois getS é um metodo do ProfY e não Professor
		//Podemos fazer um cast para acessar o metodo
		System.out.println(((ProfY)list.get(0)).getS());
		System.out.println(((ProfX)list.get(1)).getK());
	}

	private abstract class Professor {
		//Metodo abstrato to
		abstract String materia();
	}

	private class ProfY extends Professor {
		//Implementação de to
		@Override
		String materia() {
			return "Matematica";
		}
		//Metodo de B
		String getS(){
			return "Only method for B";
		}
	}

	private class ProfX extends Professor {
		//Implementação de to
		@Override
		String materia() {
			return "Inglês";
		}
		//Metodo de C
		String getK(){
			return "Only method for C";
		}
	}
}

Obrigado pela ajuda pessoal