Interface(์ธํ„ฐํŽ˜์ด์Šค)

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