- LinguagensJava
- Paradigmas de ProgramaçãoOrientação a ObjetosOrientação a Objetos: Herança
- Paradigmas de ProgramaçãoOrientação a ObjetosOrientação a Objetos: Interfaces
- Paradigmas de ProgramaçãoOrientação a ObjetosOrientação a Objetos: Polimorfismo
Dadas as classes abaixo, descritas cada qual em seu respectivo arquivo e todas estando no mesmo pacote, com classpath e JDK versão 1.7 devidamente configurados, e todos os imports corretamente feitos.
Foo1.java
abstract class Foo1 {
int x=0;
abstract int foo1();
abstract void foo2(int foo);
}
Foo2.java
public class Foo2 extends Foo1{
int foo1() {
return super.x;
}
void foo2(int foo) {
super.x=foo; }
}
Foo3.java
public class Foo3 extends Foo2 implements Foo4{
int x=0;
public int foo2() {
return x;
}
public void foo1(int foo) {
x=foo;
}
}
Foo4.java
public interface Foo4 {
void foo1(int foo);
int foo2();
}
Foo5.java
public class Foo5 implements Foo4{
int x = 0;
public int foo2() {
return x;
}
public void foo1(int foo) {
x=foo;
}
}
Com base nas classes apresentadas, no mesmo pacote foi criada a seguinte classe:
Test.java
public class Test {
public static void main(String[] args) {
Foo4 f4 = new Foo3();
f4.foo1(1);
f4 = new Foo5();
System.out.println(f4.foo2());
}
}
Ao executarmos a classe Test.java, obteremos o seguinte resultado no console: