標籤:
父類: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"); }}
Java多態(一)