Método protected

6 respostas
wilsontads

Pessoal, isso aqui já aconteceu com voces?

package dao.sistema public class UnitDAO { protected Vector findAll() throws Exception { //retornos } }
em outro pacote, tenho um unitcontroller, que extend meu unitdao e implementa o seguinte método:

package controller.sistema public class UnitController extends UnitDAO{ public Vector findAll() throws Exception { return super.findAll(); } }

No entanto, na minha chamada, do método findall, do meu controller, o compilador reclama que eu tenho que alterar no dao,
de protected pra public.
Como poderia fazer?eu não quero que meu método no dao seja public

6 Respostas

Enadrov

Se não me engano metódos protected só são acessiveis dentro do proprio pacote. E por isso o compilador não deixa você acessar esse metódo em uma classe de outro pacote.

wilsontads

na verdade tem um erro, eu não havia implementado o findAll() como public no controller. por isso ele pedia p/ alterar a visibilidade em DAO

Bruno_M_Gasparotto
Enadrov:
Se não me engano metódos protected só são acessiveis dentro do proprio pacote. E por isso o compilador não deixa você acessar esse metódo em uma classe de outro pacote.
Isso seria aqueles métodos com modificador padrão, ou seja, sem um modificador de acesso:
//Pode ser acessado apenas do mesmo pacote
void meuMetodo() {
}

//Pode ser acessado apenas pela própria classe e suas subclasses
protected void meuOutroMetodo() {
}
S
Bruno M Gasparotto:
Enadrov:
Se não me engano metódos protected só são acessiveis dentro do proprio pacote. E por isso o compilador não deixa você acessar esse metódo em uma classe de outro pacote.
Isso seria aqueles métodos com modificador padrão, ou seja, sem um modificador de acesso:
//Pode ser acessado apenas do mesmo pacote
void meuMetodo() {
}

//Pode ser acessado apenas pela própria classe e suas subclasses
protected void meuOutroMetodo() {
}

Na verdade, metodos e atributos protected são acessiveis TAMBÉM por classes dentro do pacote.
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

Bruno_M_Gasparotto
Sem_Nome:
Bruno M Gasparotto:
Enadrov:
Se não me engano metódos protected só são acessiveis dentro do proprio pacote. E por isso o compilador não deixa você acessar esse metódo em uma classe de outro pacote.
Isso seria aqueles métodos com modificador padrão, ou seja, sem um modificador de acesso:
//Pode ser acessado apenas do mesmo pacote
void meuMetodo() {
}

//Pode ser acessado apenas pela própria classe e suas subclasses
protected void meuOutroMetodo() {
}

Na verdade, metodos e atributos protected são acessiveis TAMBÉM por classes dentro do pacote.
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html


Dessa eu não sabia, pensei que fossem apenas as sub-classes :)
Valeu!

Enadrov

Valeu Sem_Nome, realmente tinha entendido errado!

Criado 22 de agosto de 2012
Ultima resposta 23 de ago. de 2012
Respostas 6
Participantes 4