父类: public class Parent { public String name; private String pass; public void say1(AA aa){ System.out.println("parent say1"); } @SuppressWarnings("unused") private void eat(){ System.out.println("parent eat"); } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } } 子类: public class Child extends Parent{ public static void main(String[] args) { AA a = new AA(); /** * 向上转型:程序运行调用某一方法时,先查看Parent类是否有调用的方法, * 若有则就去调用子类中的方法,若父类没有此方法,则编译错误。 * */ Parent p = new Child(); p.say1(a); /** * 向下转型,编译和运行皆不会出错,这里的向下转型是安全的。 */ Child child = (Child) p; child.say1(a); child.say2(a); /** * 向下转型,编译无错,运行时报错: java.lang.ClassCastException * 不安全的向下转型。 */ //Parent p2 = new Parent(); //Child c2 = (Child) p2; //c2.say1(a); } public void say1(AA aa){ System.out.println("Child say1"); } public void say2(AA aa){ System.out.println("Child say2"); } } class AA { public void sys() { System.out.println("A is"); } } class BB extends AA{ public void sys() { System.out.println("B is"); } }
原文:http://www.cnblogs.com/quyanhui/p/4373868.html