Não.
Um método estático pertence a uma classe e membros não estáticos pertencem a instâncias da classe (objeto).
Isso acontece pq os membros estáticos e não estáticos ficam em lugares diferentes na memória, os estáticos ficam na heap e os não estáticos (cada objeto) ficam na pilha (stack).
Sim.
O jeito correto é usando NomeDaClasse.metodoEstatico(), mas se existe um método estático (e acessível) na sua classe atual (ou na hierarquia de classes) o compilador deixa você chamar apenas com metodoEstatico() que depois ele converte para o bytecode correspondente.
Se ele estiver acessível (protected ou public) sim.
Dessas variáveis o que pode ou não pode usar.
instanceOf 3_$int $float ?int !byte While
Não me lembro de cabeça e estou em uma máquina sem jdk, mas talvez apenas While seja permitida…
Isso é bem fácil de conferir… Só declarar essas variáveis e ver se dá erro de compilação… hehehe
OBS: variáveis com esses nomes complicados e não intuitivos são desaconselháveis.
Sobrecarga:
public void metodoSobrecarregado() {
}
public void metodoSobrecarregado(int numero) {
}
public void metodoSobrecarregado(String nome) {
}
public void metodoSobrecarregado(int numero, String nome) {
}
Sobrescrita:
public class ClasseA {
public void metodoSobrescrito() {
}
}
public class ClasseB extends ClasseA {
@Override
public void metodoSobrescrito() {
}
}