Oi
tentei acionar o método toString() de uma superclasse com um objeto de uma subclasse desta classe, com o seguinte comando:
obj.super.toString();
porém o compilador não reconhece este comando. alguém pode me ajudar
Oi
tentei acionar o método toString() de uma superclasse com um objeto de uma subclasse desta classe, com o seguinte comando:
obj.super.toString();
porém o compilador não reconhece este comando. alguém pode me ajudar
acredito que não se possa utilizar um método sobrescrito.
eh so retornar o objeto da classe mae nao precisa referenciar o to string
E se o método requer campos da classe?
Olá, Thiago.
Para chamar um método da classe mãe, deve-se usar a cláusula super.
Não entendi exatamente o que você quer.
Coloque um exemplo de sua dúvida, tentaremos de ajudar!
[]'s
não entendi absolutamente nada do seu problema.
escreve novamente sua duvida ou então coloca o seu codigo ai, tanto da classe pai quanto da filha (coloca o codigo entre as tags code ).
De fato, exceto pelo caso do uso de “super” dentro da definição do método sobreescrito, não se pode chamar o método sobreescrito, a menos que você escreva em bytecodes, em vez de chamar o método com 100% puro Java.
class A {
public void f () {
System.out.println ("A");
}
public static void g() {
System.out.println ("static A");
}
}
class B extends A {
public void f () {
System.out.println ("B");
}
public static void g() {
System.out.println ("static B");
}
}
class TesteSobreescrito {
public static void main(String[] args) {
A a = new B();
a.f(); // imprime "B"
// b.super.f(); // não compila
((A) a).f(); // continua a imprimir "B"
// Entretanto, se pudéssemos escrever diretamente com bytecodes,
// poderíamos chamar o método f da classe A,
// usando invokespecial em vez de invokevirtual.
// veja http://java.sun.com/docs/books/jvms/second_edition/html/Compiling.doc.html#14787
a.g(); // imprime "static A"
B b = (B)a;
b.g(); // imprime "static B"
((A)b).g(); // imprime "static A"
}
}
A a = new B()
Vai utilizar a implementacao do metodo f da classe B
vc pode fazer
A a2 = new A()
Vai chamar a implementacao do metodo f da classe A
Metodos staticos nao se sobreescreve. Eles não fazem parte do objecto instanciado mas sim da classe.
vc pode criar mais uma classe C que extende A por exemplo
metodo f()
super.f();