2024-08-28 16:14:09
๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ๊ธ€์€ ๋‹ค๋ฅธ๊ฒŒ ์•„๋‹ˆ๋ผ ์บ์ŠคํŒ…์„ ํ•œ ๋ฒˆ ์—ฐ์Šตํ•ด๋ณด๋Š” ๊ธ€์ด๋‹ค.

์ง์ ‘ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ต์„ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์ •๋‹ต๊ณผ ๋งž์ถฐ๋ณด๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค.

(๋ณธ์ธ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค)

 

* ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ ํ˜•๋ณ€ํ™˜ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ์–ด๋–ค ํ˜•๋ณ€ํ™˜์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ฐพ์•„๋ณด๊ธฐ
class A
class B extends A

* A ํด๋ž˜์Šค : ๋ถ€๋ชจ ํด๋ž˜์Šค, ์Šˆํผ ํด๋ž˜์Šค(=>์ƒ์œ„ํƒ€์ž…)
* B ํด๋ž˜์Šค : ์ž์‹ ํด๋ž˜์Šค, ์„œ๋ธŒ ํด๋ž˜์Šค(=>ํ•˜์œ„ํƒ€์ž…)

[A] => ์ƒ์œ„
[B] => ํ•˜์œ„

1. A a1 = new A(); => 
2. B b1 = new B(); => 
3. A a2 = new B(); => 
4. A a3 = (A)new B(); => 
5. A a4 = b1; => A a4 = new B(); =>
6. A a5 = (A)b1; => A a5 = (A)new B(); => 

5. System.out.println(new B()); => 
6. System.out.println((A)new B()); => 
7. B b2 = new A(); => 
8. B b3 = (B)new A(); => 
9. B b4 = (B)a2; => 

10. ๋ฉ”์†Œ๋“œ ์„ ์–ธ ์ฝ”๋“œ : void testMethod(A a){...}
testMethod(new B()); => 
testMethod(new A()); => 
testMethod(a2); => 
testMethod(a1); => 
testMethod(b1); => 

-------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

์ •๋‹ต : 

 

class A
class B extends A

* A ํด๋ž˜์Šค : ๋ถ€๋ชจ ํด๋ž˜์Šค, ์Šˆํผ ํด๋ž˜์Šค(=>์ƒ์œ„ํƒ€์ž…)
* B ํด๋ž˜์Šค : ์ž์‹ ํด๋ž˜์Šค, ์„œ๋ธŒ ํด๋ž˜์Šค(=>ํ•˜์œ„ํƒ€์ž…)

[A] => ์ƒ์œ„
[B] => ํ•˜์œ„

1. A a1 = new A(); => ํ˜•๋ณ€ํ™˜ X
2. B b1 = new B(); => ํ˜•๋ณ€ํ™˜ X
3. A a2 = new B(); => ํ˜•๋ณ€ํ™˜ O => ์—…์บ์ŠคํŒ…
4. A a3 = (A)new B(); => ํ˜•๋ณ€ํ™˜ O => ์—…์บ์ŠคํŒ…(์ƒ๋žต ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ช…์‹œํ–ˆ์Œ)
5. A a4 = b1; => A a4 = new B(); => ํ˜•๋ณ€ํ™˜ O => ์—…์บ์ŠคํŒ…
6. A a5 = (A)b1; => A a5 = (A)new B(); => ํ˜•๋ณ€ํ™˜ O => ์—…์บ์ŠคํŒ…
(์ƒ๋žต ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ช…์‹œํ–ˆ์Œ)
5. System.out.println(new B()); => ํ˜•๋ณ€ํ™˜ X
6. System.out.println((A)new B()); => ํ˜•๋ณ€ํ™˜ O => ์—…์บ์ŠคํŒ… 
7. B b2 = new A(); => ํ˜•๋ณ€ํ™˜ ๋ถˆ๊ฐ€(๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ์ž์‹ํด๋ž˜์Šค์˜ ํƒ€์ž…์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค)
8. B b3 = (B)new A(); => ํ˜•๋ณ€ํ™˜ ๋ถˆ๊ฐ€(๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ์ž์‹ํด๋ž˜์Šค์˜ ํƒ€์ž…์„ ๊ฐ€์ง€์ง€ ์•Š๋Š”๋‹ค)
9. B b4 = (B)a2; => ํ˜•๋ณ€ํ™˜ O => ๋‹ค์šด์บ์ŠคํŒ…(์ƒ๋žต ๋ถˆ๊ฐ€)

10. ๋ฉ”์†Œ๋“œ ์„ ์–ธ ์ฝ”๋“œ : void testMethod(A a){...}
testMethod(new B()); => ํ˜•๋ณ€ํ™˜ O => ์—…์บ์ŠคํŒ…
testMethod(new A()); => ํ˜•๋ณ€ํ™˜ X
testMethod(a2); => ํ˜•๋ณ€ํ™˜ X => ์ด๋ฏธ a2๋ฅผ ํ†ตํ•ด ์—…์บ์ŠคํŒ…์„ ํ–ˆ์Œ
testMethod(a1); => ํ˜•๋ณ€ํ™˜ X
testMethod(b1); => ํ˜•๋ณ€ํ™˜ O => ์—…์บ์ŠคํŒ…

* ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” Aํƒ€์ž…(์ƒ์œ„ํƒ€์ž…)
A a = new B();
A a = new A();
A a = a2;
A a = a1;
A a = b1; => new B();

 

728x90