Interface vs Abstract Class, Abstract method
Interface
์ค๋ช
๋ถ๋ชจ, ์์ ๊ด๊ณ์ธ
์์ ๊ด๊ณ์ ์ฝ๋งค์ด์ง ์๊ณ
,๊ณตํต ๊ธฐ๋ฅ
์ด ํ์ํ ๋ ์ฌ์ฉํ๋คAbstract Method
๋ฅผ ์ ์ํด ๋๊ณ ,๊ตฌํ (implements)
ํ๋ Class ์์ ๊ฐ ๊ธฐ๋ฅ๋ค์Overriding
ํ์ฌ ์ฌ๋ฌ๊ฐ์ง ํํ๋ก ๊ตฌํํ ์ ์๊ธฐ์๋คํ์ฑ
๊ณผ ์ฐ๊ด๋์ด ์๋ค
Interface๋ ํด๋น Interface๋ฅผ ๊ตฌํํ๋ Class ๋ค์ ๋ํด
๋์ผํ method, ๋์
์๊ฐ์
ํ๊ธฐ ์ํด ์กด์ฌํ๋ค
์ฅ์
Java ์
๋ค์ค ์์
์ด ์๋ผ์ ๋ฐ์ํ๋Abstract Class
์ ํ๊ณ๋ฅผ ๋ณด์ํด ์ค ์ ์๋ค
๋จ์
๋ชจ๋ Class๊ฐ Interface๋ฅผ ์ฌ์ฉํ๋ค๋ฉด,
๊ณตํต์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ
๋ ๊ตฌํ (implements) ํ๋ ๋ชจ๋ Class์์ Overriding ํด์ฌ์ ์ ํด์ผํ๋ค๋ ๋ฒ๊ฑฐ๋ก์
์ด ์กด์ฌํ๋ค
์ ๋ฆฌ
Interface๋ ๊ฐ๊ฐ ๋ค๋ฅธ Abstract Class๋ฅผ ์์ํ๋ Class ๋ค์
๊ณตํต ๊ธฐ๋ฅ์ ๋ช ์ํ ๋
์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๋ค
Abstract method
์ค๋ช
์์ class์์
๋ฐ๋์ overriding
ํด์ผ๋ง ํ๋ method๋ฅผ ์๋ฏธํ๋คmethod๋
์ ์ธ๋ถ ()
์๊ตฌํ๋ถ {}
๋ก ๋๋์ด ์ง๋๋ฐ, ์ ์ธ๋ถ๊น์ง๋ง ์์ฑํ๊ณ ๊ตฌํ๋ถ๋ ์์ฑํ์ง ์์ method๋ฅผ ์๋ฏธํ๋คmethod ๋ด์ฉ์ด ์์๋ฐ๋ class์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ์ถ์ method๋ฅผ ์ฌ์ฉํ๋ค
๊ตฌํ๋ถ {}
๋ ํด๋น class๋ฅผ ์์ ๋ฐ๋ ํ์ class์์ ๋ฐ๋์ ์์ฑํด์ผ ํ๋ค๊ตฌํ๋ถ๋ฅผ ์์ฑํ์ง ์์ผ๋ฉด
์๋ฌ
๊ฐ ๋ฐ์ํ๋ค!
์ฃผ์
์ผ๋ก ์ด๋ค ๊ธฐ๋ฅ์ ์ํํ๋ method ์ธ์ง ์ค๋ช ํด์ผ ํ๋คoverriding
method์๋abstract
๋ฅผ ์์ฑํ์ง ์๋๋ค
Abstract Class
์ค๋ช
Abstract method
๋ฅผ ํ๋๋ผ๋ ๊ฐ์ง๊ณ ์๋ class๋ฅผAbstract class
๋ผ๊ณ ํ๋ค์ฆ, ์ผ๋ฐ class์๋ ์ถ์ method๊ฐ ์์ ์ ์๋ค!
Abstract class๋ฅผ ์์ ๋ฐ์ ์์ class๋ ๋ฐ๋์
abstract method
๋ฅผoverriding
ํด์ผ ํ๋คabstract class๊ฐ ์์ class์๊ฒ abstract method์
์ฌ์ ์๋ฅผ ๊ฐ์
ํ๋คabstract class
โfinal class
overriding์ ์ ํํ๊ธฐ ์ํด
์์์ ๊ธ์ง
ํ๋ final class์ ๋ฐ๋๋๋ค!
Abstract class๋
ํ๋ก๊ทธ๋จ ์ค๊ณ
๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ค๋ฐ๋ฉด์, ์ผ๋ฐ class๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , data๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ค
Abstract class๋
๊ฐ์ฒด๋ก ์์ฑํ ์ ์๋ค
์์ class์์ abstract class๋ฅผ ์์ ๋ฐ๊ณ , abstract method๋ฅผ
overriding
ํ์ฌ ๊ตฌํ์ ๋ง์น๋ค, ์์ class๋ฅผ ์ด์ํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค
๋ถ๋ชจ์ ์์ ์ฆ,
์์ ๊ด๊ณ
์์ Abstract Class๋ฅผ์์ (extends)
๋ฐ์ผ๋ฉฐ ๊ฐ์ ๋ถ๋ชจ Class (์ฌ๊ธฐ์๋ Abstract Class)๋ฅผ ์์๋ฐ๋์์ Class๋ค
๊ฐ์๊ณตํต ๊ธฐ๋ฅ
์ ๊ฐ๊ฐ๊ตฌํ
ํ๊ณ ,ํ์ฅ
์ํค๋ฉฐ์์
๊ณผ ๊ด๋ จ๋์ด ์๋ค์์์ SuperClass์ ๊ธฐ๋ฅ์ ์ด์ฉ, ํ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค!
Abstract Class๋ฅผ ์์ํ๋ฉฐ Class๋ค ๊ฐ์
๊ตฌ๋ถ
์ด ๊ฐ๋ฅํด ์ง๋ค
์ฅ์
Abstract class์์
์ค๊ณ
๊ฐ ์๋ฃ๋๋ฉด, ์์ class์์ ์์์ ๋ฐ์๊ธฐ๋ฅ์ ํ์ฅ
ํ๋๋ฐ ์ฉ์ดํ๋ค์์ class์์ abstract method์
๊ตฌํ์ ๊ฐ์
ํ๊ธฐ ๋๋ฌธ์ํ์คํ ์ ๋
๋ฅผ ๋์ธ๋คclass ๋ค์
๊ณตํต ์ฌํญ
์ ํ ๊ณณ์์ ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์
๊ฐ ํธ๋ฆฌํด์ง๋ค
๋จ์
Java์์๋
๋ค์ค ์์
์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์Abstract Class
๋ง์ผ๋ก ๊ตฌํํด์ผ ํ๋Abstract Method
๋ฅผ๊ฐ์
ํ๋๋ฐ๋ ํ๊ณ๊ฐ ์๋ค๋ง์ฝ ๋ค์ค ์์์ด ๊ฐ๋ฅํ๋ค๋ฉด?
Car, Motorcycle์ ๊ฐ๊ฐ drive() method๊ฐ ์ ์๋์ด ์์ ๊ฒฝ์ฐ,
๋ฌด์์ ์์๋ฐ์ Overriding ํ ๊ฒ์ธ์ง ๋ชจํธ
ํด ์ง๋ค์ด๊ฒ์ด
๋ค์ค ์์์ ๋ชจํธ์ฑ
์ด๊ณ , ์ด๊ฒ ๋๋ฌธ์ Java๋ ๋ค์ค ์์์ ๋ง์ ๋์๋ค
Abstract Class vs Interface
Abstract Class๋
IS - A "~์ด๋ค"
์ด๊ณ ,Interface๋
HAS - A "~์ ํ ์ ์๋"
์ด๋ค
Abstract Class๋
์์
์ด๊ณ ,Interface๋
๋คํ์ฑ
์ด๋ค
Last updated