728x90
๋ฐ์ํ
์ฐฝ์์ ์ธ ์์
์์์ ์์ ํด๋์ค์ ๊ธฐ๋ฅ์ ํ์ ํด๋์ค์๊ฒ ๋ฌผ๋ ค์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ํ์ ํด๋์ค๋ ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฃผ์ด์ง ๊ทธ๋๋ก ์ฌ์ฉํด์ผ ํ ๊น? ๋ง์ฝ ๊ทธ๋์ผ ํ๋ค๋ฉด ์ ์ฝ์ด ์๋นํ ๊ฒ์ด๋ค. ์ด๋ฐ ์ ์ฝ์ ๋ฒ์ด๋๋ ค๋ฉด ํ์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ณธ์ ์ธ ๋์๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ ์ ์์ด์ผ ํ๋ค. ์ด๋ฐ ๋งฅ๋ฝ์์ ๋์
๋ ๊ธฐ๋ฅ์ด ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ(overriding)์ด๋ค.
๋ง์ฝ ์์ ํด๋์ค์์ ๋ฌผ๋ ค ๋ฐ์ ๋ฉ์๋ sum์ ํธ์ถํ์ ๋ ์๋์ ๊ฐ์ด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ข ๋ ์น์ ํ๊ฒ ์๋ ค์ค์ผ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
class SubstractionableCalculator extends Calculator {
public void sum() {
System.out.println("์คํ ๊ฒฐ๊ณผ๋ " +(this.left + this.right)+"์
๋๋ค.");
}
}
๋ฉ์๋ sum์ด SubstractionableCalculator์ ์ถ๊ฐ ๋์๋ค. ์คํ๊ฒฐ๊ณผ๋ c1.sum์ด ์์ ํด๋์ค์ ๋ฉ์๋๊ฐ ์๋๋ผ ํ์ ํด๋์ค์ ๋ฉ์๋ sum์ ์คํํ๊ณ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค. ํ์ ํด๋์ค ์
์ฅ์์ ๋ถ๋ชจ ํด๋์ค๋ ๋งํ์๋ฉด ๊ธฐ๋ณธ์ ์ธ ๋์ ๋ฐฉ๋ฒ์ ์ ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ์ ์๋ค. ํ์ ํด๋์ค์์ ์์ ํด๋์ค์ ๋์ผํ ๋ฉ์๋๋ฅผ ์ ์ํ๋ฉด ๋ถ๋ชจ ํด๋์ค๋ก๋ถํฐ ๋ฌผ๋ ค ๋ฐ์ ๊ธฐ๋ณธ ๋์ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ๋ ํจ๊ณผ๋ฅผ ๊ฐ๊ฒ ๋๋ค. ์ด๊ฒ์ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ(overriding)์ด๋ผ๊ณ ํ๋ค.
์ค๋ฒ๋ผ์ด๋ฉ์ ์กฐ๊ฑด
์์ ํด๋์ค์์ ์ ์ํ๊ณ ์๋ ๋ฉ์๋ avg๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๊ณ ์๋ค. ๊ทธ๋ฐ๋ฐ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ข ๋ ๋ค์ํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ฉ์๋ avg๊ฐ ํ๋ฉด์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ๋์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํด์ฃผ๋ฉด ์ข๊ฒ ๋ค. ๊ทธ๋์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ๊ณ ์ณ๋ดค๋ค.
public int avg() {
return (this.left + this.right)/2;
}
์ด๊ฒ์ ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ฐ์ํ๋ค.
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The return type is incompatible with Calculator.avg()
at org.opentutorials.javatutorials.overriding.example1.SubstractionableCalculator.avg(CalculatorDemo.java:26)
at org.opentutorials.javatutorials.overriding.example1.CalculatorDemo.main(CalculatorDemo.java:40)
overriding์ ํ๊ธฐ ์ํด์๋ ๋ฉ์๋์ ๋ฆฌํด ํ์์ด ๊ฐ์์ผ ํ๋ค.
์ค๋ฒ๋ผ์ด๋ฉ์ ํ๊ธฐ ์ํด์๋ ์๋์ ์กฐ๊ฑด์ ์ถฉ์กฑ์์ผ์ผ ํ๋ค.
- ๋ฉ์๋์ ์ด๋ฆ
- ๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ์ซ์์ ๋ฐ์ดํฐ ํ์ ๊ทธ๋ฆฌ๊ณ ์์
- ๋ฉ์๋์ ๋ฆฌํด ํ์
์์ ๊ฐ์ด ๋ฉ์๋์ ํํ๋ฅผ ์ ์ํ๋ ์ฌํญ๋ค์ ํตํธ์ด์ ๋ฉ์๋์ ์๋ช
(signature)๋ผ๊ณ ํ๋ค. ์ฆ ์์ ์๋ฌ๋ ๋ฉ์๋๋ค ๊ฐ์ ์๋ช
์ด ๋ฌ๋ผ์ ๋ฐ์ํ ๋ฌธ์ ๋ค.
์ด๋ ๊ฒํด์ ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ ํ ์ ์๋ ๋ฐฉ๋ฒ์ธ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ํด์ ์์๋ดค๋ค.
728x90
๋ฐ์ํ
'๐ Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
java ์ฝ๋ฉ ๊ท์น (0) | 2022.09.18 |
---|