Cara não tenho certeza, mas acho que do jeito que vc ta falando só daria certo se o método fosse static, tipo assim:
package carros;
public class Car{
protected static String getColor(){
return "Yellow";
}
}
então eu poderia usar na minha outra classe uma referência direta, sem instancia, ficaria assim:
package Oficina;
import carros.Car;
class Oficina extends Car {
void teste(){
System.out.println(getColor() );
}
}
Dá uma olhada nesse outro esquema que fiz aqui
Classe Car
package carros;
public class Car{
protected int a;
protected void setA(int b){
a = b;
}
}
Tanto variável como método são protected. Agora a
Classe Oficina
package oficina;
import carros.Car;
public class Oficina extends Car{
void Teste(){
Oficina of = new Oficina();
of.setA(5);
System.out.print(a);
}
}
A classe oficina esta em um outro pacote, porém herda a classe Car. Na classe oficina tenho um método teste. Dentro dele crio um objeto da própria classe e faço acesso com sucesso ao método quanto a variável da classe Car. Porém na
Classe Conserto
package conserto;
import oficina.Oficina;
public class Conserto {
public static void main(String args[]){
Oficina ofici = new Oficina();
ofici.setA(6); // Erro, setA(int) has protected access in carros.Car
}
}
ocorre erro. Tenho as seguintes dúvidas:
para um objeto ter acesso a membros protected de classes herdada, ele precisa ser criado dentro da classe em que é definido, ou ele pode ser criado em outras classes, como no exemplo a classe Conserto cria o objeto tipo Oficina que herda de Car,
Resumindo minha dúvida (parece que não me expressei bem): O objeto Oficina para poder ter acesso aos membros protected da superclasse só pode ser criado dentro da clase Oficina ? Ou ele pode ser criado em outra classe como em conserto ?