์ค๋ฒ๋ผ์ด๋ฉ
์ ๋ฒ์ ๋์น ์กฐ๊ฑด์ผ๋ก๋ ์กฐ์ ํด๋์ค์ ๋ฉ์๋๋ณด๋ค ๋ง์ ์์ ์์ธ๋ฅผ ์ ์ธํ ์ ์๋ค๋ ์ .
์๋ฅผ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค.
1 2 3 4 5 6 7 8 9 10 11 | Class Parent { void parentMethod() throws IOException, SQLException { } } Class Child extends Parent { void parentMethod() throws IOException { } } | cs |
- ์ฌ๋ฐ๋ฅธ ์ค๋ฒ๋ผ์ด๋ฉ
์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋จ์ํ ์ ์ธ๋ ์์ธ์ ๊ฐ์๊ฐ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ์ ์ด๋ค.
1 2 3 4 5 | Class Child extends Parent { void parentMethod() throws Exception { } } | cs |
์์ ๊ฐ์ด ์ค๋ฒ๋ผ์ด๋ฉ์ ํ๋ฉด Exception์ ๋ชจ๋ ์์ธ์ ์กฐ์์ผ๋ก ๊ฐ์ฅ ๋ง์ ์์ธ๋ฅผ ์ ์ธํ ๊ฒ์ด๋ค. ์๋ชป๋ ์ค๋ฒ๋ผ์ด๋ฉ์ด๋ค.
์กฐ์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ ํ ๋
1. ์ ๊ทผ ์ ์ด์๋ฅผ ์กฐ์ ํด๋์ค์ ๋ฉ์๋๋ณด๋ค ์ข์ ๋ฒ์๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
2. ์์ธ๋ ์กฐ์ ํด๋์ค์ ๋ฉ์๋๋ณด๋ค ๋ง์ด ์ ์ธํ ์ ์๋ค.
3. ์ธ์คํด์ค ๋ฉ์๋๋ฅผ static ๋ฉ์๋๋ก ๋๋ ๊ทธ ๋ฐ๋๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 | class Parent { void parentMethod() {} } class Child extends Parent { void parentMethod() {} // ์ค๋ฒ๋ผ์ด๋ฉ void parentMethod(int i) {} // ์ค๋ฒ๋ก๋ฉ void childMethod() {} void childMethod(int i) {} // ์ค๋ฒ๋ก๋ฉ void childMethod() {} // already definded in Child (์ค๋ณต ์ ์) } | cs |
super
super๋ ์์ ํด๋์ค์์ ๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐํ ๋ ์ฌ์ฉ๋๋ ์ฐธ์กฐ๋ณ์์ด๋ค. this๋ ์๊ธฐ ์์ ์ ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐํ ๋ ์ฌ์ฉํ๋ฏ์ด ๊ทธ ์ฌ์ฉ๋ฒ์ ๋๊ฐ๋ค. this์ super๋ ์์ ์ด ์ํ ์ธ์คํด์ค์ ์ฃผ์๊ฐ ์ง์ญ๋ณ์๋ก ์ ์ฅ๋ ๊ฒ์ผ๋ก static๋ฉ์๋์๋ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ static ๋ฉ์๋ ์์์๋ ์ฌ์ฉํ ์ ์๊ณ ์ธ์คํด์ค ๋ฉ์๋ ์์์๋ง ์ฌ์ฉํ ์ ์๋ค.
๋ถ๋ชจ์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ ๋ ๋ถ๋ชจ์ ๋ฉ์๋์ ๋ด์ฉ์ ๋ง๋ถ์ด๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด super๋ฅผ ์ฌ์ฉํด์ ์กฐ์ํด๋์ค์ ๋ฉ์๋๋ฅผ ํฌํจ์ํค๋ ๊ฒ์ด ์ข๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Point { int x; int y; String getLocatino() { return "x : " + x + " , y :" + y; } } class Point3D extends Point { int z; String getLocation() { // ์ค๋ฒ๋ผ์ด๋ฉ return super.getLocation() + ", z :" + z; // ๋ถ๋ชจ์ ๋ฉ์๋ } } | cs |
์์ ๊ฐ์ด ํด๋์ผ๋ฉด ๋์ค์ ํน์๋ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๊ฐ ๋ณ๊ฒฝ๋๋ ์ผ์ด ์๋๋ผ๋ ์์ ๋ฉ์๋๋ ์์ ํ ํ์ ์์ด ์๋์ผ๋ก ๋ฐ์๋๊ธฐ ๋๋ฌธ์ ์์ด ๋ ๊ฐ๋ค.
๋ฉ์๋ ๋ง๊ณ ๋ ์์ฑ์์ ๊ด๋ จํด์ super๋ ์์ฃผ ๊น์ ๊ด๋ จ์ด ์๋๋ฐ this()๋ ๊ฐ์ ํด๋์ค์ ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํ๋๋ฐ ์ฌ์ฉ๋๊ณ super()๋ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์์์ด๋ผ๋ ๊ฐ๋
์์ฒด๊ฐ ๋ถ๋ชจ์ ๋ฉค๋ฒ์ ์์์ ๋ฉค๋ฒ๊ฐ ํฉ์ณ์ง ํ๋์ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ์ ๋ฉค๋ฒ ๋ํ ์ด๊ธฐํ ์์
์ด ํ์ํ๋ค. ๋ฐ๋ผ์ ์์ ํด๋์ค์ ์์ฑ์์์๋ ๋ฌด์กฐ๊ฑด ์ฒซ์ค์ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๊ฐ ํธ์ถ๋์ด์ผ ํ๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class Object { public Object() {} } class Point extends Object { int x=10; int y=20; Point(int x, int y) { super(); this.x = x; this.y = y; } } class Point3D extends Point { int z=30; Point3D(int x, int y, int z) { this.z = z; } Point3D() { this(100,200,300); } } | cs |
๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ๋ช ์์ ์ผ๋ก ํธ์ถํ์ง ์๋ ๊ฒฝ์ฐ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๋ฃ์ด์ฃผ๊ฒ ๋๋๋ฐ ์์ ๊ฒฝ์ฐ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ์๋ํ๋ฉด Point3D๋ผ๋ ์์ ํด๋์ค์ Point3D(int x, int y, int z) ์์ฑ์์๋ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ๋ ๊ตฌ๋ฌธ์ด ๋ช ์์ ์ผ๋ก ๋ค์ด๊ฐ์์ง ์๋ค. ๋ฐ๋ผ์ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ฃ์ด์ฃผ๊ฒ ๋๋๋ฐ ์ด ๋ ์์ฑ์์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์์ ์ด๋ค.
ํจํค์ง(package)
ํจํค์ง๋ ํด๋์ค ๋ฌถ์์ด๋ค. ํด๋์ค ๋๋ ์ธํฐํ์ด์ค๋ฅผ ํฌํจ์ํฌ ์ ์์ผ๋ฉฐ, ์๋ก ๊ด๋ จ๋ ํด๋์ค๋ค๋ผ๋ฆฌ ๋ฌถ์ด ๋์์ผ๋ก์จ ํด๋์ค๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
์๋ฅผ๋ค์ด Stringํด๋์ค์ ํจํค์ง๋ช ์ ํฌํจํ ์ด๋ฆ์ java.lang.String์ด๋ค. ์ฆ, java.langํจํค์ง์ ์ํ Stringํด๋์ค๋ผ๋ ์๋ฏธ์ด๋ค. ๊ทธ๋์ ๊ฐ์ ์ด๋ฆ์ ํด๋์ค์ผ ์ง๋ผ๋ ์๋ก ๋ค๋ฅธ ํจํค์ง์ ์ํ๋ฉด ํจํค์ง๋ช ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค. ํจํค์ง๋ช ์ ๋์๋ฌธ์๋ฅผ ๋ชจ๋ ํ์ฉํ์ง๋ง, ํด๋์ค๋ช ๊ณผ ์ฝ๊ฒ ๊ตฌ๋ถํ๊ธฐ ์ํด ์๋ฌธ์๋ก ํ๋ ๊ฒ์ ์์น์ผ๋ก ํ๊ณ ์๋ค.
ํด๋์ค๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ๋์ ํด๋์คํ์ผ(.class)์ธ ๊ฒ๊ณผ ๊ฐ์ด ํจํค์ง๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ๋์ ๋๋ ํ ๋ฆฌ์ด๋ค. ์ฆ, ์ด๋ค ํจํค์ง์ ์ํ ํด๋์ค๋ ํด๋น ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๋ ํด๋์ค ํ์ผ์ด๋ค.
์ค์ ๋ก Stringํด๋์ค๋ rt.jarํ์ผ์ ์์ถ๋์ด ์๋๋ฐ ์ด ํ์ผ์ ์์ถ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋๋ ํ ๋ฆฌ๊ฐ ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฒ์ฒ๋ผ ํจํค์ง๋ช ์์ ์๋ธ๋๋ ํ ๋ฆฌ๋ฅผ ํํํ๊ธฐ ์ํด '์ '์ผ๋ก ๊ตฌ๋ถํ๋ค. ์์ ์๋ฅผ๋ค๋ฉด java.lang์์ lang์ java์ ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
ํจํค์ง์ ์ ์ธ์ ์์ฃผ ๊ฐ๋จํ๋ค. ํด๋์ค๋ ์ธํฐํ์ด์ค์ ์์คํ์ผ(.java)์ ๋ค์๊ณผ ๊ฐ์ด ํ ์ค๋ง ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
1 | package ํจํค์ง๋ช
; | cs |
ํจํค์ง ์ ์ธ๋ฌธ์ ๋ฐ๋์ ์์คํ์ผ์์ ์ฃผ์๊ณผ ๊ณต๋ฐฑ์ ์ ์ธํ ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ์ด์ด์ผ ํ๊ณ , ํ๋์ ์์คํ์ผ์ ๋จ ํ๋ฒ๋ง ์ ์ธํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์์คํ์ผ์ ์์ฑํ ๋ ํจํค์ง๋ฅผ ์ ์ธํ์ง ์๊ณ ๋ ๋ฌธ์ ์์ด ๋์๊ฐ๋ ์ด์ ๋ ๋ฐ๋ก ์๋ฐ์์ ํด์ฃผ๋๊ฒ.. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฆ์๋ ํจํค์ง(unnamed package)์ ์๋์ ์ผ๋ก ์ ์ธ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค. ์์คํ์ผ์ ํจํค์ง๋ฅผ ์ ์ธํ์ง ์์ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ ์๋์ ์ผ๋ก ๊ฐ์ ํจํค์ง์ ์ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋ํ, ํจํค์ง ์ด๋ฆ์ ์ ํ ๋ ์ฃผ์ํ ์ ์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1. ์๋ฐ์ ์์ฝ์ด (int, double ๋ฑ) ์ฌ์ฉ ๊ธ์ง
2. ์ฃผ์๊ณผ ๊ณต๋ฐฑ์ ์ ์ธํ ์์ค์ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ์ค์ ์์ผํจ.
3. ํจํค์ง ์ด๋ฆ๊ณผ ํด๋์ค๊ฐ ์์นํ ํด๋์ ์ด๋ฆ์ด ๊ฐ์์ผํจ.
4. java๋ก ์์ํ๋ ํจํค์ง๋ช ์ ์ฌ์ฉํ๋ฉด ์๋๋ค. ( ์ด๋ java๊ฐ ๋ง์๋์ ๊ฒ. ์๋ฌ ๋ฐ์ -> Prohibited package name: java)
5. ํจํค์ง๋ช ์ ํด๋์ค๋ช ๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์๋ฌธ์๋ก ์์ฑํ๊ธฐ๋ฅผ ๊ถ๊ณ ํจ. (๋๋ฌธ์๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค. ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํจ)
import
import๋ ํ์ฌ ์์ฑ์ค์ธ ์์ค์์ ๋ค๋ฅธ ํจํค์ง์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ํ ๊บผ๋ฒ์ ์ฌ๋ฌ ํด๋์ค๋ฅผ ๋ถ๋ฌ์ฌ ์๋ ์๋๋ฐ ๋ง์ฝ com.common.service ์์ ์ฌ๋ฌ ํด๋์ค๊ฐ ์กด์ฌํ ๋ service์์ ์๋ ํด๋์ค๋ฅผ ์ ๋ถ ๋ถ๋ฌ์ค๊ณ ์ถ์ ๋ ๋ค์๊ณผ๊ฐ์ด import๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
1 | import com.common.service.*; | cs |
import๋ฅผ ํ์ง ์์๋ ์์ ์๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ํจํค์ง๋ ์๋๋ฐ ๋ค์๊ณผ ๊ฐ๋ค.
1. java.lang ํจํค์ง
2. ๊ฐ์ ํจํค์ง
์ง๊ธ๊น์ง String์ด๋ System์ ์๋ ๋ฉ์๋๋ค์ import๋ฅผ ๋ฐ๋ก ํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์์๋ ๊ฒ์ ๋ฐ๋ก java.langํจํค์ง ์์ ์๋ ํด๋์ค๋ค๋ก ๋ฐ๋ก import๋ฅผ ํ์ง ์์๋ ์์ค์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ด๋ค.
java.lang ํจํค์ง์ ์๋ ํด๋์ค๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
String, StringBuffer
Process, Runtime, Thread
Math, StrictMath
Exception Throwable, Error
Package, Class, ClassLoader
Wrapper, System, Stream
import์๋ static ์์ฝ์ด๋ฅผ ๋ถ์ผ ์๋ ์๋๋ฐ ๊ทธ๋ฐ ๊ฒฝ์ฐ importํ ํด๋์ค์ ์ ์ ๋ฉค๋ฒ์ ํด๋์ค๋ช ์์ด ์ ๊ทผํ ์ ์๋ค.
์๋ฅผ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค
1 2 3 4 5 6 7 | import static java.lang.System.*; public class Example { public static void main(String[] ar) { out.println("Hello, World!"); } } | cs |
java.lang ํจํค์ง์์ ์๋ System์ ํด๋์ค๋ค์ ์ ์ ์ผ๋ก importํ ๊ฒฝ์ฐ๋ค. ์ด ๊ฒฝ์ฐ ์์ ์๋ ์ ์ ๊ฐ์ฒด์ธ out์ System์ด๋ผ๋ ํด๋์ค๋ช ์์ด ๋ฐ๋ก out ๊ฐ์ฒด์ ์ ๊ทผํ์ฌ println๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ผ ์ด๊ฑด ์ธ์ ์ฌ์ฉํ ๊น??
๋งค์ฐ ๋๋ฌผ๊ฒ ์ฌ์ฉ์ด ๋๊ณ ์ค์ง ์์์ ๋ก์ปฌ ๋ณต์ฌ๋ฅผ ์๋ํ๋ ๊ฒฝ์ฐ, ํ๋ ํน์ ๋๊ฐ์ ํด๋์ค์์ ์ ์ ๋ฉค๋ฒ๋ฅผ ๋น๋ฒํ๊ฒ ์ ๊ทผํด์ผํ ๋ ์ด์ฉํ๋ค. ๋๋ถ๋ถ์ static ์์ฝ์ด๊ฐ ๊ทธ๋ ๋ฏ์ด static import ๋ํ ๊ธฐ๋ฅ์ ๋จ๋ฐํ๋ฉด ์ฝ๋๋ฅผ ๋งค์ฐ ์ฝ๊ธฐ ์ด๋ ต๊ฒ ํ๊ณ , ์ ์ง๋ณด์ ๋ํ ์ด๋ ต๊ฒ ํ๋ค. (namespace๋ฅผ ์ค์ผ์ํด)
๋ฌผ๋ก ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ํ ์ ์๊ณ ๋ ๋์ ์ฑ๋ฅ์ ์ ๋ํ ์ ์์ผ๋ฉฐ ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํ ์ ์์ ๊ฒ์ด๋ค.
์ฐธ๊ณ ์์ : Java์ ์ ์ 3rd Edition