Re: [問題] 請問final可以被改寫嗎??

看板java作者 (林帛亨加油!!!)時間13年前 (2011/07/28 03:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
稍微改編一下之前版上的程式碼 應該可以稍稍釐清override跟shadow class A {} class B extends A { int i = 1;} class C extends B { int i = 2; int getSupper(){ return super.i;} } class D { void h(A x){System.out.println(1);} } class E extends D { void h(C x){System.out.println(2);} } class F extends E { void h(A x){System.out.println(3);} } class G extends F { void h(B x){System.out.println(4);} void h(C x){System.out.println(5);} } public class TestOverriding { public static void main(String[] args) { B b = new C(); C c = (C)b; C cc = new C(); B bb = b; E e = new G(); G g = new G(); ((E)g).h(b); //output:3 g.h(b); //output:4 e.h(b); //output:3 e.h((C)b); //output:5 e.h(c); //output:5 System.out.println("c.i = " + c.i); // output:2 System.out.println("c.getSuper() = " + c.getSupper()); // output:1 System.out.println("cc.getSuper() = " + cc.getSupper());//output:1 System.out.println("b.i = " + b.i); //output:1 b.i = 5; System.out.println("=======set b.i = 5======"); System.out.println("b.i = " + b.i); //output:5 System.out.println("c.i = " + c.i); //output:2 System.out.println("c.getSuper() = " + c.getSupper()); //output:5 System.out.println("cc.getSuper() = " + cc.getSupper());//output:1 System.out.println("bb.i = " + bb.i); //output:5 } } OUTPUT: 3 4 3 5 5 c.i = 2 c.getSuper() = 1 cc.getSuper() = 1 b.i = 1 =======set b.i = 5====== b.i = 5 c.i = 2 c.getSuper() = 5 cc.getSuper() = 1 bb.i = 5 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.51.171 ※ 編輯: peacedove 來自: 220.135.51.171 (07/28 03:42)
文章代碼(AID): #1EC6bDbz (java)
文章代碼(AID): #1EC6bDbz (java)