์์ ํด๋์ค์ ํ์ ํด๋์ค๋ก ๋๋์ด ์์ ํด๋์ค์ ๋ฉค๋ฒ(ํ๋, ๋ฉ์๋, ์ด๋ํด๋์ค)๋ฅผ ํ์ ํด๋์ค์ ๊ณต์ ํ๋ ๊ฒ ( 'ํ์ฅ๋์๋ค' )
( ์ด ๋, ํ์ ํด๋์ค ๋ฉค๋ฒ์ ๊ฐ์ -> ์์ ์ ๋ฉค๋ฒ + ์์๋ ๋ฉค๋ฒ )
๋ค์ค ์์ฑ ๋ถ๊ฐ ( ์์ ํด๋์ค๋ ๋ฌด์กฐ๊ฑด ํ๋)
java์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์์๋ ๋จ์ผ ์์(single ingeritance)๋ง ํ์ฉ
class ํ์ ํด๋์ค๋ช extends ์์ ํด๋์ค๋ช { }
๐ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์ ์ ์์ ์ฝ๋๋ก ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ์ค๋ณต์ ์ ๊ฑฐ ๊ฐ๋ฅ ( ๋คํ์ ํํ์ด ๊ฐ๋ฅ )
โ๏ธ ์์๊ณผ ํฌํจ์ ์ฐจ์ด
[ ์์ ]
- ํ๋์ ํฐ ๋ฒ์์ ์์ ํด๋์ค ์์ ๊ฐ๊ฐ์ ํ์ ํด๋์ค๋ฅผ ํธ๋ฆฌ๊ตฌ์กฐ์ฒ๋ผ ๊ฐ์ง๊ณ ์๋ ๊ฒ
( ~~๋ ~~์ด๋ค IS-A)
Ex. ํ์์ ์ฌ๋์ด๋ค ( ์์ํด๋์ค - ์ฌ๋ / ํ์ํด๋์ค - ํ์ )[ ํฌํจ ]
- ๋ ํฐ ๋ฒ์์ ํด๋์ค๊ฐ ์์ ๋ฒ์์ ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ
( ~~๋ ~~์ ๊ฐ์ง๊ณ ์๋ค HAS-A)
Ex. ์ง์์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ค ( ์์ํด๋์ค - ์ง์ / ํ์ํด๋์ค - ์ฃผ์ )
์์ ํด๋์ค๋ก๋ถํฐ ์์์ ๋ฐ์ ํ์ ํด๋์ค ์์์, ์์ ํด๋์ค์ ๋ฉ์๋์ ๋์ผํ ์ด๋ฆ์ผ๋ก ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ค๋ฅด๊ฒ ์ถ๋ ฅํ ์ ์๋๋ก ์ฌ์ ์ ํ๋ ๊ฒ ( ๋ฎ์ด์ฐ๊ธฐ )
๊ธฐ๋ฅ(์๊ทธ๋์ฒ)์ ๊ฐ์๋ฐ ์ฌ์ ์ ํด์ ์คํ๋๋ ๊ฐ(๋ฐ๋)์ด ๋ค๋ฅธ ๊ฒ!
์กฐ๊ฑด (1) ๋ฉ์๋์ ์ ์ธ๋ถ(๋ฉ์๋ ์ด๋ฆ, ๋งค๊ฐ๋ณ์, ๋ฐํํ์ )๊ฐ ์์ํด๋์ค์ ์ ์ธ๋ถ์ ์์ ํ ์ผ์นํด์ผํจ
์กฐ๊ฑด (2) ์ ๊ทผ ์ ์ด์์ ์ ๊ทผ ๋ฒ์๊ฐ ์์ ํด๋์ค์ ๋ฉ์๋๋ณด๋ค ๊ฐ๊ฑฐ๋ ๋์ด์ผ ํจ
์กฐ๊ฑด (3) ์์ธ๋ ์์ ํด๋์ค์ ๋ฉ์๋๋ณด๋ค ๋ง์ด ์ ์ธํ ์ ์์
โ ๏ธ ์ค๋ฒ๋ก๋ฉ โ ๏ธ
๋์ผํ ์ด๋ฆ์ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ ์ธ์คํด์ค์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ
( ์ฌ์ ์ํ ๊ฒ์ด ์๋๊ธฐ์ ์ด๊ธฐ ๋ฉ์๋๋ ๊ทธ๋๋ก ์๊ณ ๋ง๋๋ ๋๋ก ๋ฉ์๋๊ฐ ์๊น )
โ ๋ ๊ฐ ํท๊ฐ๋ฆฌ์ง ๋ง๊ธฐ !
[ super ]
- ์์ ํด๋์ค์ ์ธ์คํด์ค(๊ฐ์ฒด)๋ฅผ ํธ์ถ
[ super() ]
- ํ์ ํด๋์ค์์ ์์ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถ
- this()์ ํน์ง ๊ฐ์, ์์ฑ์ ์์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๊ณ , ๋ฐ๋์ ์ฒซ ์ค์ ์์ผํจ
- ๋ชฉ์ (1) ์ ๋ณด๋ฅผ ์๋(data hiding)
- ๋ชฉ์ (2) ๋ฐ์ดํฐ ๋ณดํธ(data protection)
๐ ๋ด๋ถ์์๋ง ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ๋ถํ์ํ ์ธ๋ถ ๋ ธ์ถ ๋ฐฉ์ง
ํน์ ํ ๋ชฉ์ ์ ๊ณต์ ํ๋ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ๊ทธ๋ฃน๋จ์๋ก ๋ฌถ์ด ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฒ
ํจํค์ง = ๋๋ ํ ๋ฆฌ(directory) -> ํ๋์ ํจํค์ง์ ์ํ ํด๋์ค๋ ์ธํฐํ์ด์ค ํ์ผ์ ๋ชจ๋ ํด๋น ํจํค์ง์ ์ํด์์
๋๋ ํ ๋ฆฌ๋ ๊ณ์ธต๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ณ์ธต ๊ตฌ์กฐ ๊ฐ ๊ตฌ๋ถ์ ์ (.)
Ex. package practice.test;
์์ค ์ฝ๋์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ฐ๋์ package ํจํค์ง๋ช
์ด ํ์๋์ด์ผ ํจ
Ex. ๋ํ์ ์ธ ํจํค์ง -> ์๋ฐ์ ๊ธฐ๋ณธ ํด๋์ค๋ค์ ๋ชจ์ ๋์ java.lang
/ ํ์ฅ ํด๋์ค๋ฅผ ๋ฌถ์ด ๋์ java.util
/ ์๋ฐ์ ์
์ถ๋ ฅ๊ณผ ๊ด๋ จ๋ ํด๋์ค๋ฅผ ๋ฌถ์ด๋์ java.io
์ java.nio
๋ฑ
ํด๋์ค์ ์ด๋ฆ์ด ๊ฐ์๋ ๊ฐ๊ฐ ๋ค๋ฅธ ํจํค์ง ๋ด์ ์๋ค๋ฉด ์ถฉ๋ ๋ฐ์ X
( import๋ฌธ์ ์ฐ์ง ์์ ๊ฒฝ์ฐ, practice.test.ExImport ex = new practice.test.ExImport();
์ด๋ฐ ์์ผ๋ก ํจํค์ง๋ช
์ ๋ชจ๋ ํฌํจ์์ผ ํจํค์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผํจ )
import ํจํค์ง๋ช .ํด๋์ค๋ช ;
์์ ๊ฐ์ด, ํจํค์ง๋ช ๊ณผ ํจํค์ง๋ช ์ ์๋ตํ๋ ค๊ณ ํ๋ ํด๋์ค๋ช ์ ์ ์ด์ฃผ๋ฉด ๋จ
import ํจํค์ง๋ช .*;
์์ ๊ฐ์ด ํ๋ฉด, ํด๋น ํจํค์ง์ ๋ชจ๋ ํด๋์ค๋ฅผ ํจํค์ง๋ช ์์ด ์ฌ์ฉ ๊ฐ๋ฅ
ํด๋์ค, ํ๋, ๋ฉ์๋, ์์ฑ์ ๋ฑ์ ๋ถ๊ฐ์ ์ธ ์๋ฏธ๋ฅผ ๋ถ์ฌํ๋ ํค์๋ (ํ์ฉ์ฌ์ ์ญํ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ)
๋ณดํธ์ ์๋์ ์ํ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ
ํ๋์ ๋์์ ์ฌ๋ฌ ์ ์ด์ ์ฌ์ฉ ๊ฐ๋ฅ (์ ๊ทผ ์ ์ด์๋ ํ๋ฒ๋ง ์ฌ์ฉ ๊ฐ๋ฅ)
ํด๋์ค ์ธ๋ถ๋ก์ ๋ถํ์ํ ๋ฐ์ดํฐ ๋ ธ์ถ์ ๋ฐฉ์ง(data hiding)ํ ์ ์๊ณ , ์ธ๋ถ๋ก๋ถํฐ ๋ฐ์ดํฐ๊ฐ ์์๋ก ๋ณ๊ฒฝ๋์ง ์๋๋ก ๋ง์ ์ ์์
๐ก ์ ๊ทผ ์ ์ด์์ ์ ๊ทผ ๋ฒ์ (๋ฐ์ผ๋ก ๊ฐ ์๋ก ๋ฒ์๊ฐ ๋์ด์ง)
โ
(1)private
- ํด๋์ค ๋ด O / ํจํค์ง ๋ด X / ๋ค๋ฅธ ํจํค์ง์ ํ์ ํด๋์ค X / ํจํค์ง ์ธ X
โ
(2)default
- ํด๋์ค ๋ด O / ํจํค์ง ๋ด O / ๋ค๋ฅธ ํจํค์ง์ ํ์ ํด๋์ค X / ํจํค์ง ์ธ X
(๋ณ์๋ช ์์ ์๋ฌด๋ฐ ์ ๊ทผ์ ์ด์๊ฐ ์๋ ๊ฒฝ์ฐ์ ์๋ ์ค์ ๋๋ ์ ๊ทผ ์ ์ด์)
โ
(3)protected
- ํด๋์ค ๋ด O / ํจํค์ง ๋ด O / ๋ค๋ฅธ ํจํค์ง์ ํ์ ํด๋์ค O / ํจํค์ง ์ธ X
โ
(4)public
- ํด๋์ค ๋ด O / ํจํค์ง ๋ด O / ๋ค๋ฅธ ํจํค์ง์ ํ์ ํด๋์ค O / ํจํค์ง ์ธ O ( ์ ๊ทผ ์ ํ ์์ (๊ณต์ฉ) )
โ๏ธ ์๋์ ๊ฐ์ด 1๋ฒ ํจํค์ง์ ํ ํด๋์ค ์์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ ๊ทผ ์ ์ด์๋ก ๋ณ์๋ฅผ ์ค์ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด
public class Parent { // Parent ํด๋์ค์ ์ ๊ทผ ์ ์ด์๋ public
private int a = 1;
int b = 2; //default ์ ๊ทผ ์ ์ด์
protected int c = 3;
public int d = 4;
๋์ผ ํด๋์ค ๋ด์ ๋ฉ์๋์์ ๊ฐ๊ฐ์ ์ถ๋ ฅํ ๊ฒฝ์ฐ
-> a,b,c,d ๋ชจ๋ ์ถ๋ ฅ
๊ฐ์ ํจํค์ง์ง๋ง ๋ค๋ฅธ ํด๋์ค ๋ด์ ๋ฉ์๋์์ ๊ฐ๊ฐ์ ์ถ๋ ฅํ ๊ฒฝ์ฐ
-> b,c,d ์ถ๋ ฅ
( ์ ๊ทผ ์ ์ด์๊ฐ private์ธ a๋ ๋์ผ ํด๋์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ฐ์ )
โ but โ ๋ฉ์๋ ์์ฒด๋ฅผ ํธ์ถํด์ค ๊ฒฝ์ฐ์๋ a,b,c,d ๋ชจ๋ ์ถ๋ ฅ๋จ
๋ค๋ฅธ ํจํค์ง ๋ด์ 1๋ฒ ํจํค์ง๋ฅผ ์์๋ฐ์ ํ์ ํด๋์ค์ ๋ฉ์๋์์ ๊ฐ๊ฐ์ ์ถ๋ ฅํ ๊ฒฝ์ฐ
-> c,d ์ถ๋ ฅ
( ์ ๊ทผ ์ ์ด์๊ฐ private์ธ a๋ ๋์ผ ํด๋์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ฐ์ )
( ์ ๊ทผ ์ ์ด์๊ฐ defualt์ธ b๋ ๋์ผ ํจํค์ง๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ฐ์ )
๋ค๋ฅธ ํจํค์ง ๋ด์ 1๋ฒ ํจํค์ง๋ฅผ ์์๋ฐ์ง ์์ ํด๋์ค์ ๋ฉ์๋์์ ๊ฐ๊ฐ์ ์ถ๋ ฅํ ๊ฒฝ์ฐ
-> d ์ถ๋ ฅ
( ์ ๊ทผ ์ ์ด์๊ฐ private์ธ a๋ ๋์ผ ํด๋์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ฐ์ )
( ์ ๊ทผ ์ ์ด์๊ฐ defualt์ธ b๋ ๋์ผ ํจํค์ง๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ฐ์ )
( ์ ๊ทผ ์ ์ด์๊ฐ protected์ธ c๋ ํจํค์ง๋ฅผ ์์๋ฐ์ ํ์ ํด๋์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ ๋ฐ์ )
( Alt + Insert ๋จ์ถํค๋ก ๋ฐ๋ก ์์ฑ ๊ฐ๋ฅ )
(private ์ ๊ทผ ์ ์ด์๊ฐ ์ ๋ณด๋ฅผ ์ ๊ทผํ ์ ์๋๋ก ์ธํ๋ฆฌ๋ฅผ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ getter setter ๋ฅผ ์ฌ์ฉํด์๋ง ์์ ํด์ผํจ)
[ getter ๋ฉ์๋ ] get + ๋ณ์๋ช
[ setter ๋ฉ์๋ ] set + ๋ณ์๋ช
์ค๋๋ ์ฝ๋๋ฅผ ์ง์ ์จ๋ณด๋ฉด์ ํ๋ ์ดํด๊ฐ ๋ ์ ๋๋ค!
ํ์ตํ๋ฉด์ ๋ค ์ดํด๊ฐ ์ ๊ฐ๊ณ ๊ด์ฐฎ์๋๋ฐ getter setter๋ง ๋ญ๊ฐ ์ด์ง ์ดํด๊ฐ ์๊ฐ์ ์ข ๋ ์ฐพ์๋ณด์๊ณ ๊ทธ๋๋ ๊ด์ฐฎ์์ก๋ค!
๊ฐ์ฒด์งํฅ ์ฒ์ ํ์ตํ ๋๋ณด๋ค ๊ทธ๋๋ ๋จธ๋ฆฌ์ ๊ตฌ์กฐ๊ฐ ๋ง์ด ์กํ ์ ๋ณด๋ค ๋ ์ ์ดํดํ ์ ์๋ ๊ฒ ๊ฐ๋ค !