Java - construtor privado vs final e mais
Suponha que haja uma classe com todos os seus construtores declarados como privados.
Por exemplo.:
public class This {
private This () { }
public someMethod( ){
// something here
}
// some more-- no other constructors
}
Pelo que eu sei, tornar todos os construtores privados é semelhante a declarar a classe "Isto" comofinal- para que não possa ser estendido.
No entanto, as mensagens do Eclipse que estou recebendo estão me dando a impressão de que isso é possível - uma classe privada de todos os construtores pode ser estendida. Dê uma olhada neste:
Quando eu tento estender essa classe com algo como
public class That extends This {
...
}
Eclipse me dando um erro que: "Super Construtor Implícito Este () não é visível para o construtor padrão. Deve definir um construtor explícito."
Quando eu defino um construtor por conta própria:
public class That extends This {
That () {..}
...
}
desta vez eu estou ficando: "Super Construtor Implícito Este () não é visível para o construtor padrão. Deve invocar explicitamente outro construtor."
Existe uma maneira de contornar isso - de estender uma classe da qual todos os construtores são privados?
se sim, como?
se não, qual é a diferença entre parar uma classe de ser extendida por i.) tornando seus construtores privados, e ii) definindo-a comofinal?
Nota: eu viUm construtor em Java pode ser privado? entre algumas outras discussões.