Essa aqui é legal

public class Person {
private void say(String s){
System.out.println("I’m saying: " + s);
}
public static void main(String[] args) {
Person p = new Director();
p.say(“Hello”);
}
}

public class Director extends Person {
public void say(String s){
System.out.println(“I’m the director”);
}
}

Eu acho que imprime:
“I’m saying: Hello”

pois não há Override e por sua vez VMI.

perfeito !! é isso mesmo que acontece …

I´m saying :Hello

Caramba…postei qdo vc respondeu!Tinha q ter sido mais rápido…

O que significa VMI ???

Obrigado,
Tiago Serafim

O que eu quis dizer é que NÃO HÁ VMI (Virtual Method Invocation)

Quando a chamada do metodo da Super classe feita em tempo de compilação chama o metodo da SubClasse em tempo de execução.
Ex:

public class Person {
   public void say(String s){
     System.out.println("I'm saying: " + s);
   }

   public static void main(String[] args) {
     Person p = new Director();
     p.say("Hello");
   }
}

public class Director extends Person {
   public void say(String s){
      System.out.println("I'm the director");
    }
 }

Neste caso, é feito o override.

I’m saying: Hello

Falow…

Olá…eu queria saber como que vc conseguiu ter acesso à função private da classe Person. No meu programa abaixo, essa é dada como invisível.

public class Pai
{
private void Polimorfismo()
{
System.out.println(“Chama função PAI”);
}
}

class Filho extends Pai
{
protected void Polimorfismo()
{
System.out.println(“Chama função FILHO”);
}
}

class Neto extends Filho
{
public void Polimorfismo()
{
System.out.println(“Chama função NETO”);
}
}

class Main
{
public static void main(String[] args)
{
Pai pai = new Filho();
pai.Polimorfismo();
}
}

Mas é obvio que não vai ser visivel, você criou quatro classes, no exemplo que balrog deu, a invocação pertence a mesma classe, sendo assim possivel invocar o método private.
Abraço…

nao querendo ser chato…

http://www.guj.com.br/posts/list/50115.java

Ok…