2015-04-20 15:36:01 -07:00
|
|
|
//: polymorphism/FieldAccess.java
|
|
|
|
// Direct field access is determined at compile time.
|
|
|
|
|
|
|
|
class Super {
|
|
|
|
public int field = 0;
|
|
|
|
public int getField() { return field; }
|
|
|
|
}
|
|
|
|
|
|
|
|
class Sub extends Super {
|
|
|
|
public int field = 1;
|
2015-05-05 11:20:13 -07:00
|
|
|
@Override
|
2015-04-20 15:36:01 -07:00
|
|
|
public int getField() { return field; }
|
|
|
|
public int getSuperField() { return super.field; }
|
|
|
|
}
|
|
|
|
|
|
|
|
public class FieldAccess {
|
|
|
|
public static void main(String[] args) {
|
|
|
|
Super sup = new Sub(); // Upcast
|
|
|
|
System.out.println("sup.field = " + sup.field +
|
|
|
|
", sup.getField() = " + sup.getField());
|
|
|
|
Sub sub = new Sub();
|
|
|
|
System.out.println("sub.field = " +
|
|
|
|
sub.field + ", sub.getField() = " +
|
|
|
|
sub.getField() +
|
|
|
|
", sub.getSuperField() = " +
|
|
|
|
sub.getSuperField());
|
|
|
|
}
|
|
|
|
} /* Output:
|
|
|
|
sup.field = 0, sup.getField() = 1
|
|
|
|
sub.field = 1, sub.getField() = 1, sub.getSuperField() = 0
|
|
|
|
*///:~
|