upcast例:
public class Test
{
public static void main(String[] args)
{
Cup aCup = new BrokenCup();
aCup.addWater(10); // method binding
}
} class Cup
{
public void addWater(int w)
{
this.water = this.water + w;
} public void drinkWater(int w)
{
this.water = this.water - w;
} private int water = 0;
} class BrokenCup extends Cup
{
public void addWater(int w)
{
System.out.println("shit, broken cup");
} public void drinkWater(int w)
{
System.out.println("om...num..., no water inside");
}
}
downcast例:
public class TestJavaDemo{
public static void main(String[] args) {
Person p=new Student();
Student s=(Student)p;
s.fun1();
s.fun2();
}
} class Person{
public void fun1(){
System.out.println("1.Person{fun1()}");
} public void fun2(){
System.out.println("2.Person{fun2()}");
}
} class Student extends Person{
public void fun1(){
System.out.println("3.Student{fun1()}");
}
public void fun3(){
System.out.println("4.Student{fun3()}");
}
}