2023. 2. 2. 12:31ใjava
์ธํฐํ์ด์ค ๋ง๋ค ๋ ์๊ธ์ ๋๋ฌธ์๋ก ๋ง๋ค์ด์ผ ํจ.
Interface : ๊ธฐ๋ฅ ์ ๊ณต์ ํ์ง๋ง ๊ทธ ๊ธฐ๋ฅ์ด ์ด๋ค์์ผ๋ก ๋ง๋ค์ด์ ธ ์๋์ง๋ ์๋ค.
์ฆ, ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์ง์ ๋ชฐ๋ผ๋ ์ธํฐํ์ด์ค ๋ฉ์๋๋ง ์์๋ ๊ฐ์ฒด ํธ์ถ์ด ๊ฐ๋ฅ
์ธํฐํ์ด์ค์ ๊ตฌ์ฑ ์์
public class ์ธํฐํ์ด์ค ๊ตฌํํ ํด๋์ค implements ์ธํฐํ์ด์ค
1. ๋ฉ์๋์ ์ ์ธ (....) < ()์ ๋ด์ฉ ์์.
โ ์ธํฐํ์ด์ค๋ ๋ณ์ ์์!
โ ์์ฑ์๋ ์์! (interface๋ ๊ฐ์ฒด ์์ฑ ๋ถ๊ฐ >> ์์ฑ์ X)
ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ค๊ณ๋์ด๋ค.
์ธํฐํ์ด์ค์ ๋ด๋ถ์ ๋ฉ์๋๋ ๋ฐ๋์ ์ ๊ทผ์ ํ์๋ฅผ public์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค.
public์ ์๋ตํ๋๋ผ๋ ์์์ public์ผ๋ก ํด์ํ๋ค.
public interface Interface01 {
public void PrintName();
}
ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ ๋ง๋ค๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ค,
๊ทธ๋ฐ๋ฐ ์ธํฐํ์ด์ค์์ ์ ์ธ๋ ๋ฉ์๋๋ฅผ ํด๋น ํด๋์ค์์ ๋ฐ๋์ ์ ์ธํด์ผ ํ๋ค.
public class Inter01 implements Interface01{ //implements๋ ๊ตฌํํ๋ค๋ ์๋ฏธ
@Override
public void PrintName() { //์ธํฐํ์ด์ค์์ ์ ์ธ๋ ๋ฉ์๋ ์ ์ธ
}
}
์ธํฐํ์ด์ค ์ฐ์ต
SAMSUNG
package tv;
public class TVUser {
public static void main(String[] args) {
SamsungTV tv = new SamsungTV();
tv.powerOn();
tv.soundUp();
tv.soundDown();
tv.powerOff();
}
}
LG
package tv;
public class TVUser {
public static void main(String[] args) {
LgTV tv = new LgTV();
tv.turnOn();
tv.turnOff();
tv.volumeUp();
tv.volumeDown();
}
}
TV ์ ์กฐ ํ๋ ํ์ฌ 2๊ฐ
tv ๊ธฐ๋ฅ์ด ๊ฐ์๋ฐ ๋ฉ์๋๊ฐ ๋ค ๋ค๋ฆ.
์ด๋ด ๋ ์ธํฐํ์ด์ค ์ฌ์ฉ
package tv;
public interface TV {
//TV ๊ธฐ๋ฅ
void powerOn(); //์ ๊ทผ์ ํ์ default X ์ธํฐํ์ด์ค๋ ๋ฌด์กฐ๊ฑด public์.
void powerOff(); //public ํต์์ ์ผ๋ก ์๋ต.
void volumeUp();
void volumeDown();
}
์ธํฐํ์ด์ค๊ฐ ๊ฐ์ง ๋ชจ๋ ๋ฉ์๋ ๊ตฌํ ์ฝ๊ฒ ํ๋ ๋ฒ :
์ค๋ฅ๋ public class NewSamsungTV implements TV ์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๋ฉด ๋ฉ์๋ ๊ตฌํ ๋ธ.
SAMSUNG
package tv;
public class NewSamsungTV implements TV{
//TV ์ธํฐํ์ด์ค๊ฐ ๊ฐ์ง ๋ชจ๋ ๋ฉ์๋๋ฅผ ๋ฐ๋์ ๊ตฌํํ ํ ๋ค๋ฅธ ์ฝ๋ ์ ๊ธฐ ๊ฐ๋ฅ
@Override
public void powerOn() {
System.out.println("์ผ์ฑ ํฐ๋น - ์ ์ ์ผฌ");
}
@Override
public void powerOff() {
System.out.println("์ผ์ฑ ํฐ๋น - ์ ์ ๋");
}
@Override
public void volumeUp() {
System.out.println("์ผ์ฑ ํฐ๋น - ์๋ฆฌ ๋์");
}
@Override
public void volumeDown() {
System.out.println("์ผ์ฑ ํฐ๋น - ์๋ฆฌ ์ค์");
}
}
LG
package tv;
public class NewLgTV implements TV{
@Override
public void powerOn() {
System.out.println("์์ง ํฐ๋น - ์ ์ ์ผฌ");
}
@Override
public void powerOff() {
System.out.println("์์ง ํฐ๋น - ์ ์ ๋");
}
@Override
public void volumeUp() {
System.out.println("์์ง ํฐ๋น - ์๋ฆฌ ๋์");
}
@Override
public void volumeDown() {
System.out.println("์์ง ํฐ๋น - ์๋ฆฌ ๋์");
}
}
interface๋ฅผ ์ด์ฉํ์ฌ, ๊ฐ๋ฐ ์ฝ๋๋ฅผ ์ง์ ์์ ํ์ง ์๊ณ ๋, ์ฌ์ฉํ๊ณ ์๋ ๊ฐ์ฒด๋ง ๋ณ๊ฒฝํ ์ ์๋๋ก ํ๊ธฐ ์ํจ
package tv;
public class TVUser {
public static void main(String[] args) {
NewSamsungTV tv = new NewSamsungTV();
tv.powerOn();
tv.powerOff();
tv.volumeUp();
tv.volumeDown();
}
}
์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฐ๊ฟ ๋ ๊ฐ์ฒด๋ง ์์ ํด์ฃผ๋ฉด LG TV๊ฐ ์คํ๋๋ค.
package tv;
public class TVUser {
public static void main(String[] args) {
NewLgTV tv = new NewLgTV();
tv.powerOn();
tv.powerOff();
tv.volumeUp();
tv.volumeDown();
}
}
์ธํฐํ์ด์ค๋ช ์ฐธ์กฐ๋ณ์๋ช (๊ฐ์ฒด๋ช ) = new ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค์ ์์ฑ์(); ๊ฐ๋ฅ
์๋์ฒ๋ผ ์ฐ๋ฉด ๋์ค์ ์์ ํ ๋ ํจ์จ์ ์
๊ตฌํํ ํด๋์ค๋ง ๋ฐ๊พธ๋ฉด ๋จ.
TV tv = new NewLgTV(); //NewLgTV tv = new NewLgTV();์ ๊ฐ์
TV tv = new NewSamsungTV();
-
//์ธํฐํ์ด์ค๋ ์์ฑ์๊ฐ ์์ผ๋ฏ๋ก ๊ฐ์ฒด ์์ฑ ๋ถ๊ฐ!
TV t = new TV(); //์ค๋ฅ
'java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ํ ์์ ๋ฌธ์ (0) | 2023.02.02 |
---|---|
์ธํฐํ์ด์ค ๋ฌธ์ ํ๊ธฐ (0) | 2023.02.02 |
String ํด๋์ค (0) | 2023.02.02 |
@ : anotation (0) | 2023.02.01 |
Object (0) | 2023.02.01 |