๐Ÿ“š ์ฐธ๊ณ ํ•œ ์ฑ…

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

- ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค -

 

 

๐Ÿฅ ๐Ÿฅ ๐Ÿฅ

 


 

โœ”๏ธ   ์˜ˆ์™ธ_ 457p

 

 ์˜ˆ์™ธ

: ์—ฐ์‚ฐ ์˜ค๋ฅ˜, ์ˆซ์ž ํฌ๋งท ์˜ค๋ฅ˜ ๋“ฑ๊ณผ ๊ฐ™์ด ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

 ์—๋Ÿฌ

: ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ์ž์ฒด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋กœ ๊ฐœ๋ฐœ์ž ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

 

์˜ˆ์™ธ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋งํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ด๋•Œ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•ด์„œ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฐจ์„ ์ฑ…์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.์—๋Ÿฌ๋Š” ์•„์˜ˆ ์ฒ˜๋ฆฌ์ž์ฒด๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜์ธ ๋ธ”๋ฃจ์Šคํฌ๋ฆฐ ๊ฐ™์€ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ž๋ฐ”์—์„œ ์˜ˆ์™ธ์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋Š” Exception ํด๋ž˜์Šค๊ณ , ์—๋Ÿฌ์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋Š” Error ํด๋ž˜์Šค๋‹ค. ์ด ๋‘ ๊ฐœ์˜ ํด๋ž˜์Šค๋Š” Throwable ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์—๋Ÿฌ์™€ ์˜ˆ์™ธ ๋ชจ๋‘ Throwable ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ๋‹ค. 

 

 

 

 


 

 

 

โœ”๏ธ   ์ผ๋ฐ˜ ์˜ˆ์™ธ_ 458p

 

 ์ผ๋ฐ˜ ์˜ˆ์™ธ

: ์ปดํŒŒ์ผ ์ „์— ์˜ˆ์™ธ ๋ฐœ์ƒ ๋ฌธ๋ฒ•์„ ๊ฒ€์‚ฌํ•˜๋ฉฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ปดํŒŒ์ผ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.

 

• InterruptedException

: ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ฉˆ์ถ”๊ฒŒ ๋งŒ๋“ ๋‹ค.

 Thread thread = new Thread(() -> {
            try {
                System.out.println("์ž‘์—… ์‹œ์ž‘: 5์ดˆ ๋Œ€๊ธฐ ์ค‘");
                Thread.sleep(5000);  // 5์ดˆ ๋Œ€๊ธฐ
                System.out.println("์ž‘์—… ์™„๋ฃŒ");
            } catch (InterruptedException e) {
                System.out.println("์Šค๋ ˆ๋“œ๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
            }
        });
์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ณผ์ •์—์„œ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์†Œ ๋‹จ์œ„๋กœ, ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์กด์žฌํ•œ๋‹ค. ์ฆ‰, ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ์ปค๋‹ค๋ž€ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ž‘์€ ์ž‘์—…๋“ค๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ๊ฐ ์“ฐ๋ ˆ๋“œ์— ํ• ๋‹นํ•œ ํ›„ ์‹คํ–‰๋œ๋‹ค. ๋™์‹œ์— ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋‹ˆ ์ „์ฒด ์ž‘์—…์„ ๋นจ๋ฆฌ ๋๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ „์ฒด ์ž‘์—…์„ ์ทจ์†Œํ•˜์—ฌ ์ข…๋ฃŒํ•ด์•ผํ•  ๊ฒฝ์šฐ, ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ž‘์—…์ด ๋”์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋‹ˆ ์‹คํ–‰์„ ๊ทธ๋งŒ๋‘๊ณ  ๋ฆฌ์†Œ์Šค๋“ค์„ ์ •๋ฆฌํ•œ ํ›„ ์ข…๋ฃŒํ•˜๋„๋ก ์•Œ๋ฆฐ๋‹ค. ์ด๋•Œ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

์ด๋•Œ ๋งŒ์•ฝ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์–ด๋”˜๊ฐ„์— ๋ธ”๋กœํ‚น ๋˜์–ด์žˆ๋‹ค๋ฉด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒดํฌํ•˜๊ณ  ์ข…๋ฃŒ ๋กœ์ง์„ ๋„ฃ์–ด๋†จ์–ด๋„ ์ธํ„ฐ๋ŸฝํŠธ ๋กœ์ง ์‹คํ–‰์€ ์˜์›ํžˆ ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— sleep์—์„œ ๋ฒ—์–ด๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ ๋กœ์ง์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•˜๋Š”๋ฐ Interrupted Exception์„ try-catch๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜์— ๋ช…์‹œํ•ด์„œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ž์—๊ฒŒ ์ฒ˜๋ฆฌ๋ฅผ ์œ„์ž„ํ•ด์•ผํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ Interrupted Exception์€ ๋ฐ˜๋“œ์‹œ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ Interrupted Exception์„ ๋ฌด์‹œํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๊ธฐ์ €๊ธฐ ๋‚จ๋ฐœํ•œ๋‹ค๋ฉด ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ณ  kill-9๋กœ ๊ฐ•์ œ ์ข…๋ฃŒํ•ด์•ผํ•œ๋‹ค.

 

 

[Java] InterruptedException์ด๋ž€?

์ž๋ฐ”๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ๊ณ ๋ ค๋˜์–ด์•ผ ํ•˜๋Š” ์˜ˆ์™ธ ์ค‘ ํ•˜๋‚˜๊ฐ€ InterruptedException์ด๋‹ค. ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰์„ ์ž ๊น ๋™์•ˆ ๋ฉˆ์ถ”๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” sleep ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž try { Thread.sleep(1000); } catch (Inter

hbase.tistory.com

 

 


• ClassNotFoundException

: JVM์ด ํด๋ž˜์Šค ์ด๋ฆ„์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ›์•„์„œ ๋กœ๋”ฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•œ๋‹ค.

public class ClassNotFoundExample {
    public static void main(String[] args) {
        try {
            Class.forName("com.example.NotExistClass");
        } catch (ClassNotFoundException e) {
            System.out.println("ํด๋ž˜์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: " + e.getMessage());
        }
    }
}
Class.forName("ํด๋ž˜์Šค๋ช…")์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋‹ค. ClassNotFoundException๋Š” checked Exception์ด๋ผ ๋ฐ˜๋“œ์‹œ try-catch๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

• IOException

: ์ž๋ฐ” ์ž…์ถœ๋ ฅ์—์„œ ์ฃผ๋กœ ๋ณด์ด๋Š” ์ผ๋ฐ˜ ์˜ˆ์™ธ๋กœ, ์ฝ˜์†”์ด๋‚˜ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜ ์ฝ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

    try {
            BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
            String line = reader.readLine();
            System.out.println("ํŒŒ์ผ ๋‚ด์šฉ: " + line);
            reader.close();
        } catch (IOException e) {
            System.out.println("ํŒŒ์ผ์„ ์ฝ๋Š” ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค: " + e.getMessage());
        }
FileReader์™€ BufferedReader๋ฅผ ์ด์šฉํ•˜์—ฌ test.txt ํŒŒ์ผ์˜ ์ฒซ ์ค„์„ ์ฝ๋Š”๋‹ค. ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ฝ๋Š” ์ค‘ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด
IOException์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ œ๋Œ€๋กœ ์‹คํ–‰์„ ํ•˜๊ณ ์ž ์›ํ•œ๋‹ค๋ฉด ๊ฐ™์€ ํด๋”์— test.txt ํŒŒ์ผ์ด ์ œ๋Œ€๋กœ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ์„ ํ•ด์•ผํ•œ๋‹ค. 

 

 

 

• FileNotFoundException

: IOException์˜ ํ•˜์œ„ ํด๋ž˜์Šค์ด๋ฉฐ, ํŒŒ์ผ์„ ์ฝ์„ ๋•Œ ํ•ด๋‹น ๊ฒฝ๋กœ์— ํŒŒ์ผ์ด ์—†๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†๋Š” ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

  try {
            FileInputStream fis = new FileInputStream("test.txt");
        } catch (FileNotFoundException e) {
            System.out.println("ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: " + e.getMessage());
        }
test.txt ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

• CloneNotSupportedException

: Cloneable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š์€ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๊ธฐ ์œ„ํ•ด clone( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐœ์ƒํ•œ๋‹ค.

class Person implements Cloneable {
    String name;

    Person(String name) {
        this.name = name;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class CloneExample {
    public static void main(String[] args) {
        Person person1 = new Person("Alice");

        try {
            Person person2 = (Person) person1.clone();
            System.out.println("๋ณต์ œ ์„ฑ๊ณต");
        } catch (CloneNotSupportedException e) {
            System.out.println("๋ณต์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: " + e.getMessage());
        }
    }
}
Object ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ์ค‘ clone( )์€ ์ž์‹ ์˜ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•œ ํด๋ก  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ๋ฐ˜๋“œ์‹œ Cloneable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•ด์•ผํ•œ๋‹ค.

clone ๋ฉ”์„œ๋“œ๋Š” Java์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค์ธ java.lang.Object ํด๋ž˜์Šค์—์„œ ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋กœ ๊ทธ ์•ˆ์— protected๋กœ ์ •์˜๋˜์–ด ์žˆ๋‹ค. ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ super.clone( )์„ ํ˜ธ์ถœํ•ด์•ผ ๋ณต์ œ๋œ๋‹ค. ๋งŒ์•ฝ clone ๋ฉ”์„œ๋“œ๋ฅผ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด protected -> public์œผ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์•ผ ํ•œ๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ์‹คํ–‰ ์˜ˆ์™ธ_ 463p

 ์‹คํ–‰ ์˜ˆ์™ธ

: ์ปดํŒŒ์ผ ์ „์ด ์•„๋‹Œ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋กœ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋”ฐ๋กœ ํ•˜์ง€ ์•Š๋”๋ผ๋„ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ ์ข…๋ฃŒ๋œ๋‹ค.

 

ArithmeticException

: ์—ฐ์‚ฐ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

        try {
            int a = 10;
            int b = 0;
            int result = a / b; 
            System.out.println("๊ฒฐ๊ณผ: " + result);
        } catch (ArithmeticException e) {
            System.out.println("์‚ฐ์ˆ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ: " + e.getMessage());
        }
์œ„์˜ ์ฝ”๋“œ๋Š” ๋ถ„๋ชจ๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋กœ ์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€ํ•˜์—ฌ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์ด๋‹ค. ๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด result ๊ฐ’์ด -1 ํ˜น์€ 1000 ๋“ฑ์˜ ๊ฐ’์„ ๋„ฃ์€ ์ฝ”๋“œ๋ฅผ try-catch๋กœ ๊ฐ์‹ธ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๋„๋ก ๋ง‰์œผ๋ฉด์„œ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ณด๊ณ  ์—ฐ์‚ฐ ์ฝ”๋“œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ๋ฐœ๊ฒฌํ•œ๋‹ค.

 

 

 

ClassCastException

: ์ƒ์† ๊ด€๊ณ„์— ์žˆ๋Š” ํด๋ž˜์Šค ๊ฐ„์˜ ๋‹ค์šด ์บ์ŠคํŒ…์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ,  ๋‹ค์šด์บ์ŠคํŒ…์„ ์‹œ๋„ํ•˜๋ฉด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ํ˜•๋ณ€ํ™˜์„ ํ•˜๋ฉด ๋ฐœ์ƒํ•œ๋‹ค.

        Object obj = "๋‚˜๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค";  // String ๊ฐ์ฒด

        try {
            Integer num = (Integer) obj;  // ์ž˜๋ชป๋œ ํ˜•๋ณ€ํ™˜
        } catch (ClassCastException e) {
            System.out.println("ํ˜•๋ณ€ํ™˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: " + e.getMessage());
        }
class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}

public class CastExample {
    public static void main(String[] args) {
        Animal animal = new Cat();  // ์‹ค์ œ ๊ฐ์ฒด๋Š” Cat

        try {
            Dog dog = (Dog) animal;  // ์ž˜๋ชป๋œ ๋‹ค์šด์บ์ŠคํŒ…
        } catch (ClassCastException e) {
            System.out.println("ํ˜•๋ณ€ํ™˜ ์˜ค๋ฅ˜: " + e.getMessage());
        }
    }
}

 

 

 

ArrayIndexOutOfBoundException

: ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

        int[] numbers = {10, 20, 30};

        try {
            System.out.println(numbers[3]); // ์ธ๋ฑ์Šค 3์€ ์กด์žฌํ•˜์ง€ ์•Š์Œ
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("๋ฐฐ์—ด ์ธ๋ฑ์Šค ์˜ค๋ฅ˜ ๋ฐœ์ƒ: " + e.getMessage());
        }

 

 

 

NumberFormatException

: ๋ฌธ์ž์—ด์„ ์ˆซ์ž ๋˜๋Š” ์‹ค์ˆ˜๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ๋ฌธ์ž์—ด์ด ๋ณ€ํ™˜ํ•˜๊ณ ์ž ํ•˜๋Š” ์ˆซ์ž ํ˜•์‹์ด ์•„๋‹ˆ๋ฉด ๋ณ€ํ™˜์ด ์‹คํŒจํ•˜๋Š”๋ฐ ์ด๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

        String input = "123ABC";  // ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด

        try {
            int number = Integer.parseInt(input);  // ์˜ˆ์™ธ ๋ฐœ์ƒ
            System.out.println("๋ณ€ํ™˜๋œ ์ˆซ์ž: " + number);
        } catch (NumberFormatException e) {
            System.out.println("์ˆซ์ž ํ˜•์‹ ์˜ค๋ฅ˜: " + e.getMessage());
        }

 

 

 

NullPointerException

: ์ฐธ์กฐ ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์ง€ ์•Š์€ ์ƒํ™ฉ์—์„œ ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค.

        String text = null;  // ๋ฌธ์ž์—ด ๋ณ€์ˆ˜์— null ํ• ๋‹น

        try {
            System.out.println("๋ฌธ์ž์—ด ๊ธธ์ด: " + text.length());  // ์˜ˆ์™ธ ๋ฐœ์ƒ
        } catch (NullPointerException e) {
            System.out.println("๋„ ํฌ์ธํ„ฐ ์˜ˆ์™ธ ๋ฐœ์ƒ: " + e.getMessage());
        }
์œ„์˜ ์ฝ”๋“œ์—์„œ text๋Š” null ๊ฐ’์ด๋‹ค. null์€ ์œ„์นซ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ์ดˆ๊นƒ๊ฐ’์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

 

 

 

๐Ÿ“š ์ฐธ๊ณ ํ•œ ์ฑ…

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

- ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค -

 

 

๐Ÿฅ ๐Ÿฅ ๐Ÿฅ

 


 

โœ”๏ธ   ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค_ 436p

 

 ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค

: ์ด๋ฆ„์„ ์•Œ ์ˆ˜ ์—†๋Š” ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์ธ์Šคํ„ด์Šค ์ต๋ช… ํด๋ž˜์Šค์™€ ์ง€์—ญ ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค.

 

 

์ด๋„ˆํด๋ž˜์Šค์™€ ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค ๋น„๊ตํ•˜๊ธฐ.

interface MyInterface {
    public abstract void myMethod1();
}

class OuterClass {
     MyInterface inner = new InnerClass();
     void myMethod2(){
         inner.myMethod1();
     }
     
     class InnerClass implements MyInterface {
         public void myMethod1() {
             System.out.println("์ธ์Šคํ„ด์Šค ์ด๋„ˆ ํด๋ž˜์Šค!");
         }
     }
}

public class PracticeInnerClass {
     public static void main(String[] args) {
     
         OuterClass outer = new OuterClass();
         outer.myMethod2();
     }
}
์œ„์˜ ์ฝ”๋“œ๋Š” ์ด๋„ˆํด๋ž˜์Šค์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„ ์ธํ„ฐํŽ˜์ด์Šค myMethod1์„ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์ด๋‹ค. ์ถœ๋ ฅ๋˜๋Š” ์ฝ”๋“œ๋Š” 'myMethod1!'์ด ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค. ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค ์ฝ”๋“œ์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๋น„๊ตํ•˜๋ฉด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
interface MyInterface {
    public abstract void myMethod1();
}

class OuterClass {

	 MyInterface myinter = new MyInterface() {
         public void myMethod1() {
              System.out.println("์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค");
         }
     };
     
     void myMethod2() {
         myinter.myMethod1();
     }    
     
}

public class PracticeAnonymousClass {
     public static void main(String[] args) {
     
         OuterClass outer = new OuterClass();
         outer.myMethod2();
     }
}
์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ธ MyInterface๋ฅผ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์œผ๋กœ ๋ฐ›์•„ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ƒ์„ฑ์ž ์ค‘๊ด„ํ˜ธ ์•ˆ์— ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ์ธ myMethod1๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ MyInterface๋ฅผ ์ƒ์†๋ฐ›์•„ ํด๋ž˜์Šค๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑํ•œ ํ›„(์ต๋ช… ํด๋ž˜์Šค) ํ•ด๋‹น ํด๋ž˜์Šค๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ฐธ์กฐ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•œ๋‹ค.

์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฃผ์˜ํ•ด์•ผํ•  ๊ฒƒ์€ ํ•ญ์ƒ ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ๋งŒ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ถ€๋ชจํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋˜์—ˆ๊ธฐ์— ๋ถ€๋ชจ์—๊ฒŒ ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

 

Q. ๊ทธ๋Ÿฐ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋Š”๋ฐ, ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋Š” ์–ด๋–ป๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๊ฑธ๊นŒ?

A. ์œ„์˜ ์„ค๋ช…๊ณผ ๊ฐ™๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰๋˜๋Š” ์ด์œ ๋Š”, ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์ต๋ช… ํด๋ž˜์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ๊ทธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋“œ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ์ด๋ฆ„ ์—†๋Š” ํด๋ž˜์Šค๊ฐ€ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑ๋˜์–ด ๊ทธ ๊ฐ์ฒด๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž… ๋ณ€์ˆ˜์— ์ €์žฅ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

 

Q. ์ฑ…์— ๋ณด๋ฉด '๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ์„ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์• ์ดˆ์— ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์„๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ž‘์„ฑํ•ด์•ผํ•  ๋‚ด์šฉ์ด ๋งŽ์„ ๋•Œ ๋ฉ”์„œ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋ฉฐ, ์ด๋•Œ ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค ์ •์˜์‹ ๋‚ด๋ถ€์— ์ถ”๊ฐ€ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.'๋ผ๊ณ  ๋˜์–ด์žˆ๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ?

A. ๋ฌธ์žฅ์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์‚ดํŽด๋ณด๊ฒ ๋‹ค. ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€๋ž€ ์œ„์˜ ์ฝ”๋“œ์—์„œ๋Š” OuterClass์— ์žˆ๋Š” myMethod1์„ ์˜๋ฏธํ•œ๋‹ค. ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•œ ๊ฒƒ์ด๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•˜๊ธธ ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋Š” ํ•ญ์ƒ ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ๋งŒ ์„ ์–ธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ์—๊ฒŒ ์—†๋Š” ๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ ๋งŒ์•ฝ ์–ด๋–ค ๊ธฐ๋Šฅ์„ myMethod1 ์•ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ๊ตณ์ด ์™ธ๋ถ€์— ๋งŒ๋“ค์ง€ ๋ง๊ณ  myMethod1์— ์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ, ์›๋ž˜ ์žˆ๋˜ ๋ฉ”์„œ๋“œ์™€ ๋ถ„๋ฆฌํ•ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‰ฝ๊ฒŒ ํ•œ ์ค„๋กœ ์ •๋ฆฌํ•˜์ž๋ฉด ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ ๋ถ€๋ชจ์—๊ฒŒ ์—†๋Š” ๋ฉ”์„œ๋“œ์—ฌ๋„, ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ๋งŒ๋“ค๋ฉด ๋œ๋‹ค๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 


 

 

 

โœ”๏ธ   ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์˜ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ_ 439p

 

์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์˜ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ ๋ฐฉ๋ฒ•_ ์ฝ”๋“œ: ์ต๋ช…์ด๋„ˆํด๋ž˜์Šค + ์ฐธ์กฐ๋ณ€์ˆ˜ํ™œ์šฉX

interface Messenger {
    void send(String message);
}

class MessageProcessor {
    void process(Messenger messenger) {
        messenger.send("์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค ๋ฉ”์‹œ์ง€ ์ „์†ก!");
    }
}

public class Main {
    public static void main(String[] args) {
        MessageProcessor processor = new MessageProcessor();
        
        // ์ฐธ์กฐ ๋ณ€์ˆ˜ ์—†์ด ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ์ง์ ‘ ์ธ์ž๋กœ ์ „๋‹ฌ
        processor.process(new Messenger() {
            public void send(String message) {
                System.out.println("๋ณด๋‚ธ ๋ฉ”์‹œ์ง€: " + message);
            }
        });
    }
}
์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์˜ ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์—ฌ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช…์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช… ์—†์ด ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š”๋ฐ ์ด๋•Œ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช…์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช…์„ ํ™œ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 

๊ฐ์ฒด ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ์—ญํ• ์€ ๊ฐ์ฒด์˜ ์ฐธ์ขƒ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋‹จ์ˆœํžˆ ๊ฐ์ฒด์˜ ์ฐธ์ขƒ๊ฐ’๋งŒ์„ ์ „๋‹ฌํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๊ตณ์ด ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์„œ๋“œ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜ ์œ„์น˜์—์„œ ๋ฐ”๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ์ฐธ์ขƒ๊ฐ’์ด ๋ฉ”์„œ๋“œ๋กœ ์ „๋‹ฌ๋  ๊ฒƒ์ด๋‹ค.

 

 

 

 


 

 

 

 

โœ”๏ธ   ์ด๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค_ 444p

 

 ์ •์  ์ด๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค

: ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜์—ฌ ํ•ด๋‹น ํด๋ž˜์Šค์— ์˜์กด์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

// ๊ตฌํ˜„ ํด๋ž˜์Šค

class Outer {
    interface MyInterface {
        void hello();
    }
}

public class Main {
    public static void main(String[] args) {

        Outer.MyInterface obj1 = new Outer.MyInterface() {
            public void hello() {
                System.out.println("์ต๋ช… ํด๋ž˜์Šค!!");
            }
        };
        obj1.hello();

        class Impl implements Outer.MyInterface {
            public void hello() {
                System.out.println("๊ตฌํ˜„ ํด๋ž˜์Šค!!");
            }
        }

        Outer.MyInterface obj2 = new Impl();
        obj2.hello();
    }
}

 

์ด๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฌด์กฐ๊ฑด ์ •์  ์ด๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ static ์ œ์–ด์ž๋ฅผ ์ƒ๋žตํ•˜๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์œ„์˜ ์ฝ”๋“œ์—์„œ ์ปดํŒŒ์ผ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” 'Outer$MyInterface.class'๋กœ ํ˜•์„ฑ๋œ๋‹ค. ์•„์šฐํ„ฐ ํด๋ž˜์Šค ๋‚ด์— ์†ํ•ด ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋„ ๋‹น์—ฐํ•˜๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฏ€๋กœ ์ง์ ‘ ๊ฐ์ฒด ์ƒ์„ฑ์€ ๋ถˆ๊ฐ€ํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†์„ ๋ฐ›๊ฑฐ๋‚˜, ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•ด์•ผํ•œ๋‹ค.

์œ„์˜ ์ฝ”๋“œ์—์„  ๋‘๊ฐ€์ง€ ๋ชจ๋‘๋ฅผ ๋ฐ˜์˜ํ•œ ์ฝ”๋“œ๋กœ, obj1์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๋ฐฉ๋ฒ• ๊ทธ๋ฆฌ๊ณ  Impl ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด Outer.MyInterface๋ฅผ ์ƒ์†ํ•œ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค.

 

 

 

 ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

class Button {

    // ์ธํ„ฐํŽ˜์ด์Šค OnClickListenerํƒ€์ž…์„ ๊ฐ€์ง€๋Š” ocl ๋ณ€์ˆ˜์ธ ํ•„๋“œ
    OnClickListner ocl;
    
    // OnClickListenerํƒ€์ž…์˜ ocl ๋ณ€์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„
    // Button ํด๋ž˜์Šค์˜ ocl ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” setOnClickListener ๋ฉ”์„œ๋“œ
    void setOnClickListener(OnClickListener ocl) {
         this.ocl = ocl;
    }
    
    // ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค
    // ์ถ”์ƒ ๋ฉ”์„œ๋“œ onClick์ด ์žˆ์Œ์„ ์ •์˜
    interface OnclickListener {
        public abstract void onClick();
    }
    
    void click() {
         ocl.onClick();
    }
}
public static void main(String[] ar) {
    // Button ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์ธ button1
    Button button1 = new Button();
    
    // Button ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ต๋ช… ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„
    button1.setOnClickListener(new Button.OnClicklistener() {
        @Override
        public void onClick() {
             System.out.println("๊ฐœ๋ฐœ์ž 1. ์Œ์•…์žฌ์ƒ");
        }
    });
    button1.click();
}
main์—์„œ Button ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์ธ button1์ด ๋งŒ๋“ค์–ด์ง€๊ณ , ์ด ๊ฐ์ฒด๋Š” OnClickListener ํƒ€์ž…์˜ ocl ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. OnClickListener์—์„œ onClick ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ setOnclickListener๋Š” ์ด ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ๋ฒ„ํŠผ ์•ˆ์— ์žˆ๋Š” ocl ํ•„๋“œ์— ์ €์žฅํ•œ๋‹ค. this.ocl = ocl๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ „๋‹ฌํ•œ ๋™์ž‘์„ ๋ฒ„ํŠผ์ด ๊ธฐ์–ตํ•˜๊ฒŒ ๋œ๋‹ค.

button1.click();๋กœ ๋ฒ„ํŠผ์ด ํด๋ฆญ๋˜๋ฉด, onClick ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด "๊ฐœ๋ฐœ์ž 1. ์Œ์•…์žฌ์ƒ"์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

๐Ÿ“š ์ฐธ๊ณ ํ•œ ์ฑ…

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

- ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค -

 

 

๐Ÿฅ ๐Ÿฅ ๐Ÿฅ

 


 

โœ”๏ธ   ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ์ด๋„ˆ ํด๋ž˜์Šค_ 426p

 

 ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ์ด๋„ˆ ํด๋ž˜์Šค

: ์•„์šฐํ„ฐ ํด๋ž˜์Šค ๋‚ด์—์„œ ์ธ์Šคํ„ด์Šค์ธ ๊ฐ์ฒด ๋‚ด๋ถ€ ๋ฉค๋ฒ„์˜ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋Š” ํด๋ž˜์Šค

 

class OuterClass {

    public int a = 1;
    protected int b = 2;
    private int c = 3;
    
    void outerMethod(){
        System.out.println("์•„์šฐํ„ฐํด๋ž˜์Šค!");
    }    

    class InnerClass {
        
        void innerMethod() {
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
            
            outerMethod();
        }
    }    
     
}

public class PraticeInnerClass1 {
    public static void main(String[] args) {
    
        OuterClass outer = new OuterClass();
        
        OuterClass.InnerClass inner = outer.new InnerClass();
        
        inner.innerMethod();
        
    }
}
๋ฉค๋ฒ„ ์ด๋„ˆ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜์ธ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๋ฉค๋ฒ„์˜ ํ˜•ํƒœ๋กœ ์กด์žฌํ•œ๋‹ค. ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„๋ž€, ํ•ด๋‹น ํด๋ž˜์Šค์— ์žˆ๋Š” ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์•ผ๊ธฐ ํ•˜๋Š”๋ฐ ํ•ด๋‹น ํด๋ž˜์Šค ๋‚ด๋ถ€์— ํด๋ž˜์Šค๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ์ด ํด๋ž˜์Šค๋„ ๋ฉค๋ฒ„๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ์ด๋„ˆ ํด๋ž˜์Šค๋Š” ์•„์šฐํ„ฐ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ ‘๊ทผ ์ง€์ •์ž์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ž๋ฐ”๋Š” ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๊ฐ ํด๋ž˜์Šค๋ณ„๋กœ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์ธ .class ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด๋„ˆ ํด๋ž˜์Šค ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์„ฑ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ํ˜•ํƒœ๋Š” ์•„์šฐํ„ฐ ํด๋ž˜์Šค์™€๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ์•„์šฐํ„ฐ ํด๋ž˜์Šค๋Š” 'OuterClass.class'๋ผ๊ณ  ์ƒ์„ฑ์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์•„์šฐํ„ฐ ํด๋ž˜์Šค ์•ˆ์— ์žˆ๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” 'OuterClass$InnerClass.class'๋กœ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์•„์šฐํ„ฐ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์„ ํ‘œ์‹œํ•˜๊ณ ์ž ์ƒ์„ฑ๋œ๋‹ค.

InnerClass ๋‚ด์— innerMethod๊ฐ€ ์žˆ๋‹ค. innerMethod๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ คํ•œ๋‹ค. ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์•„์šฐํ„ฐ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด ์ƒ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ ํ›„์— ์•„์šฐํ„ฐ ํด๋ž˜์Šค ๋‚ด์— ์žˆ๋Š” ์ด๋„ˆ ํด๋ž˜์Šค์ด๋‹ˆ, ์ƒ์„ฑํ•œ ์•„์šฐํ„ฐ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด ๋‚ด๋ถ€์— ์žˆ๋Š” ์ด๋„ˆ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด OuterClass.InnerClass inner = outer.new InnerClass( );๊ฐ€ ๋œ๋‹ค.

์œ„์˜ ์ฝ”๋“œ์—์„œ innerMethod๋ฅผ ๋ณด๋ฉด ์•„์šฐํ„ฐ ํด๋ž˜์Šค ํ•„๋“œ์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ๋‹ค. ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” InnerClass ๋‚ด์— OuterClass์˜ ๋ฉค๋ฒ„์™€ ๋™์ผํ•œ ์ด๋ฆ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ๋งŒ์•ฝ ๊ฐ™์€ ์ด๋ฆ„์ด InnerClass๋‚ด์— ์กด์žฌํ•œ๋‹ค๋ฉด ์„€๋„์ž‰์ด ๋ฐœ์ƒํ•ด InnerClass ๋‚ด๋ถ€ ํ•„๋“œ์˜ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ƒํƒœ์—์„œ ์•„์šฐํ„ฐ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? 'OuterClass.this.a'๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค. OuterClass๋ฅผ ๋ถ™์ด์ง€ ์•Š์œผ๋ฉด InnerClass์˜ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๋‹ˆ ์œ ์˜ํ•ด์•ผํ•œ๋‹ค.

 

 

 

 


 

 

 

 

โœ”๏ธ   ์ •์  ๋ฉค๋ฒ„ ์ด๋„ˆ ํด๋ž˜์Šค_ 431p

 

 ์ •์  ๋ฉค๋ฒ„ ์ด๋„ˆ ํด๋ž˜์Šค

: ์ด๋„ˆ ํด๋ž˜์Šค ์•ž์— static์ด ํฌํ•จ๋œ ํด๋ž˜์Šค๋‹ค.

class OuterClass {
    int a = 1;
    static int b = 2;
    
    void outerMethod1() {
        System.out.println("์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ!");
    }
    
    static void outerMethod2() {
        System.out.println("์ •์  ๋ฉ”์„œ๋“œ!");
    }    
     
    
    static class InnerClass {
        void innerMethod() {
            System.out.println(b);
            outerMethod();
        }
    }
}

public class PracticeInnerClass2 {
    public static void main(String[] args) {
        OuterClass.InnerClass inner = new OuterClass.InnerClass();
        
        inner.innerMethod();
    }
}
static์ด ํฌํ•จ๋œ ์ด๋„ˆ ํด๋ž˜์Šค๋Š” static ํŠน์„ฑ์„ ์ง€๋‹ˆ๊ฒŒ ๋œ๋‹ค. ๊ทธ ํŠน์ง•์ด ์•„์šฐํ„ฐ ํด๋ž˜์Šค ๋‚ด์— static์ด ๋ถ™์€ ๋ฉค๋ฒ„๋งŒ ์ •์  ์ด๋„ˆ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ๋˜ ๋‹ค๋ฅธ ํŠน์„ฑ์„ ์‚ดํŽด๋ณด์ž. ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด main์—์„œ ์•„์šฐํ„ฐ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ •์  ์ด๋„ˆ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์•„์šฐํ„ฐ ํด๋ž˜์Šค ๋‚ด์— ์žˆ๋Š” ์ •์  ์ด๋„ˆ ํด๋ž˜์Šค๋„ ์ •์  ๋ฉค๋ฒ„์ด๋ฏ€๋กœ ํด๋ž˜์Šค๋ช…์œผ๋กœ ๋ฐ”๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ์ง€์—ญ ์ด๋„ˆ ํด๋ž˜์Šค_ 433p


 ์ง€์—ญ ์ด๋„ˆ ํด๋ž˜์Šค

: ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ •์˜๋˜๋Š” ํด๋ž˜์Šค

class OuterClass {
    int a = 1;
    
    void outerMethod(){
        int b = 2;
        
        class InnerClass {
            void innerMethod() {
                System.out.println(a);
                System.out.println(b);
            }
        }
        
    InnerClass inner = new InnerClass();
    inner.innerMethod();
    }
}

public class PracticeInnerClass3 {
    public static void main(String[] args) {
        
        OuterClass outer = new OuterClass();
        outer.outerMethod();
        
    }
}
์ง€์—ญ ์ด๋„ˆ ํด๋ž˜์Šค๋Š” ์ •์˜๋œ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ง€์—ญ ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธ ์ดํ›„ ๋ฐ”๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ์ด ๋˜๋ฉด ๊ทธ๋•Œ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ์˜์—ญ๊ณผ๋Š” ๋‹ค๋ฅธ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ •์  ์˜์—ญ์€ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ์ „์— ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋˜์–ด์žˆ๋‹ค.

๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ณ€์ˆ˜๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์ง€์—ญ ์ด๋„ˆ ํด๋ž˜์Šค๊ฐ€ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋ฉด ํ•ด๋‹น ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ final๋กœ ์„ ์–ธ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ final์„ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ํ•ด๋‹น ์ง€์—ญ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ๋˜ ํ•ด๋‹น ์ง€์—ญ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณ€๋™๋œ๋‹ค๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

Q. ์ง€์—ญ ๋ณ€์ˆ˜์—๋งŒ final์„ ๋ถ™์—ฌ์•ผํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ?

A. ๋ฉ”์„œ๋“œ๊ฐ€ ๋์ด ๋‚˜๋”๋ผ๋„ ์ง€์—ญ ์ด๋„ˆ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์„œ๋“œ ๋ฐ–์—์„œ ์‚ด์•„๋‚จ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฉ”์„œ๋“œ ๋‚ด์— ์žˆ๋Š” ๋ณ€์ˆ˜์ธ ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ์ง€์—ญ ์ด๋„ˆ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋Š” ์‚ด์•„๋‚จ์•„์„œ ํ™œ๋™ํ•ด์•ผํ•˜๋Š”๋ฐ, ๋ณ€์ˆ˜๊ฐ€ ๋๋‚˜๋ฒ„๋ฆฌ๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋Š” ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— final์„ ๋ถ™์—ฌ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€๋™๋˜์ง€ ๋ชปํ•˜๋„๋กํ•˜๊ณ  ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ฉ”์„œ๋“œ๊ฐ€ ๋์ด๋‚˜๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

 

 

 

 

 

 

๐Ÿ“š ์ฐธ๊ณ ํ•œ ์ฑ…

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

- ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค -

 

 

๐Ÿฅ ๐Ÿฅ ๐Ÿฅ

 


 

โœ”๏ธ   ์ถ”์ƒํด๋ž˜์Šค_ 395p

 

 ์ถ”์ƒํด๋ž˜์Šค

: ๋ฉ”์„œ๋“œ ๋ณธ์ฑ„๊ฐ€ ์™„์„ฑ๋˜์ง€ ์•Š์€ ๋ฏธ์™„์„ฑ ๋ฉ”์„œ๋“œ๋กœ, ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜๋Š” ์ค‘๊ด„ํ˜ธ ์ž์ฒด๊ฐ€ ์—†์œผ๋ฉฐ ๋ช…๋ น์–ด์˜ ๋์„ ์•Œ๋ฆฌ๋Š” ์„ธ๋ฏธํด๋ก ์œผ๋กœ ๋๋‚œ๋‹ค.

abstract class A {
    abstract void abc();    
    void bcd() {
    }
}
์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ 1๊ฐœ ์ด์ƒ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ์ •์˜ํ•ด์•ผํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋Š” ๋ฏธ์™„์„ฑ ๋ฉ”์„œ๋“œ์ธ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์—†๋Š” ํ˜•ํƒœ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ 1๊ฐœ ์ด์ƒ ์กด์žฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค์˜ ํ˜•์‹์€ class ํ‚ค์›Œ๋“œ ์•ž์— abstract๋ฅผ ๋ถ™์—ฌ ํ‘œํ˜„ํ•œ๋‹ค.

์ถ”์ƒ ํด๋ž˜์Šค์˜ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์€, ์ค‘๊ด„ํ˜ธ์˜ ์—ฌ๋ถ€์ด๋‹ค. ๋งŒ์ผ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ๋กœ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•˜๋ฉด ๊ทธ ๋ฉ”์„œ๋“œ๋Š” '์•„๋ฌด๋Ÿฐ ๊ธฐ๋Šฅ์„ ํ•˜์ง€ ์•Š๋Š” ์™„์„ฑ๋œ ๋ฉ”์„œ๋“œ'๋ผ๊ณ  ๊ธฐ๋Šฅ์„ ๋ช…ํ™•ํžˆ ์ •์˜ํ•˜๊ฒŒ ๋œ๋‹ค.

์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๋‚ด๋ถ€์˜ ๋ฏธ์™„์„ฑ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ ์ด์œ ๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์„ฑ ๋•Œ๋ฌธ์ด๋‹ค. ํž™ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ฐ’์ด ๋น„์–ด์žˆ๋Š” ํ•„๋“œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์—†๋Š” ํŠน์„ฑ์„ ์ง€๋…”๋Š”๋ฐ, ์ด๋กœ ์ธํ•ด ๋ฏธ์™„์„ฑ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” A a = new A( )์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์ž์ฒด๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

์ถ”์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• : 1. ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•œ ์ผ๋ฐ˜ ํด๋ž˜์Šค

abstract class A {
	abstract void abc();
}

class B extends A {
	void aaa() {
    	System.out.println("์ž์‹ ํด๋ž˜์Šค๋กœ ์ถ”์ƒ ํด๋ž˜์Šค ์ด์šฉํ•˜๊ธฐ");
    }
}

public class AbstractClass_1 {
	public static void main(String[] args) {
    	A b1 = new B();
        A b2 = new B();
        
        b1.aaa();
        b2.aaa();
    }
}
B๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ–ˆ๋‹ค. B๊ฐ€ ์ผ๋ฐ˜ ํด๋ž˜์Šค๋กœ ์—ญํ• ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ–ˆ๊ธฐ์— ์ถ”์ƒ ๋ฉ”์„œ๋“œ์˜ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์—ญํ• ์„ ํ•  ๊ฒƒ์ธ์ง€ ์ •์˜ํ•ด์•ผํ•œ๋‹ค. ๋งŒ์•ฝ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์ง์ ‘ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•œ๋‹ค.

 

 

 

 ์ถ”์ƒ ํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ• : 2. ์ด๋„ˆํด๋ž˜์Šค 

abstract class A {
    abstract void abc();
}

public class AbstractClass {
    public static main(String[] args) {
    
        A a1 = new A();
            void abc() {
                System.out.println("์ด๋„ˆํด๋ž˜์Šค๋กœ ์ด์šฉํ•˜๊ธฐ");
            }
        };
                  
        a1.aaa();
}
์ด๋„ˆํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์€, A( )๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํด๋ž˜์Šค A๋ฅผ ์ƒ์†๋ฐ›์•„ aaa( ) ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•œ ์ต๋ช… ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๊ฒฝ์šฐ ํด๋ž˜์Šค A์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ต๋ช… ์ด๋„ˆ ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•œ ์žฅ์ ์œผ๋กœ๋Š” ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด ๋ณด์ธ๋‹ค๋Š” ์ ์ด ์žˆ์ง€๋งŒ, ์ƒ์†ํ•œ ๊ฒฝ์šฐ์™€ ๋‹ฌ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค๊ธฐ์—” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. 

 

 

 

 


 

 

 

โœ”๏ธ   ์ธํ„ฐํŽ˜์ด์Šค_ 402p

 

 ์ธํ„ฐํŽ˜์ด์Šค

: ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ด๋‚˜ ์žฅ์น˜, ๋˜๋Š” ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์ •๋ณด ๊ตํ™˜์„ ์œ„ํ•œ ์ ‘์ ์ด๋‚˜ ๊ฒฝ๊ณ„๋ฉด

interface abc {
    public static final int a = 1;
    public abstract void abc();
}
์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๋ถ€์˜ ๋ชจ๋“  ํ•„๋“œ๋Š” public static final๋กœ ์ •์˜๋˜์–ด์žˆ๊ณ , static๊ณผ default ๋ฉ”์„œ๋“œ ์ด์™ธ์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” public abstract๋กœ ์ •์˜๋˜์–ด์žˆ๋‹ค. ํด๋ž˜์Šค๋Š” class๋ผ๊ณ  ์ด๋ฆ„ ์•ž์— ๋ถ™์—ฌ์ฃผ์—ˆ๋‹ค๋ฉด, ์ธํ„ฐํŽ˜์ด์Šค๋Š” interface์ž„์„ ์ด๋ฆ„ ์•ž์— ๋ช…์‹œํ•œ๋‹ค. ์ œ์–ด์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ ์ง€ ์•Š์•˜์–ด๋„ public static final๊ณผ public abstract๋Š” ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.

 

Q. ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด ํ•„๋“œ์— static๊ณผ final์„ ๋ถ™์ด๋Š” ์ด์œ ๋Š”?

A. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ธฐ๋Šฅ์˜ ์•ฝ์†์„ ์ •์˜ํ•˜๋Š” ๊ณณ์œผ๋กœ "์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ฒ ๋‹ค."๋ผ๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„๊ณผ ๊ทœ์•ฝ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ–‰์œ„์— ๋Œ€ํ•œ ์•ฝ์†๋งŒ ํ•˜์ง€, ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์˜ ๋ณ€์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒ์ˆ˜์—ฌ์•ผ๋งŒ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ static์€ ํด๋ž˜์Šค(์ธํ„ฐํŽ˜์ด์Šค) ์ž์ฒด์— ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ, final์€ ํ•œ ๋ฒˆ ์ •์˜ํ•œ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํŠน์„ฑ์„ ๋ถ€์—ฌํ•ด์ค€๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜์— static์„ ๋ถ™์—ฌ ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์— ์ €์žฅ๋˜๋„๋ก ํ•˜์—ฌ ์ ‘๊ทผ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ณณ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ๋˜๋Š” ๋ณ€์ˆ˜์— ์˜ํ•ด ๋ฉ”์„œ๋“œ์˜ ๋ณ€๋™์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผํ•จ์œผ๋กœ final์„ ๋ถ™์ธ๋‹ค.

 

 

Q. ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ถ”์ƒ ํด๋ž˜์Šค์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ค ์ƒํ™ฉ์— ๋งž์ถฐ ์จ์•ผํ•˜๋Š”๊ฐ€?

A. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๋งŒ ์ •์˜ํ•ด๋‘๋Š” ๊ณณ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์—์„œ ๊ตฌ์ฒดํ™”๊ฐ€ ์ด๋ฃจ์–ด์ ธ ์ •ํ™•ํžˆ ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๋Š”์ง€ ์ •์˜ํ•œ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ถ”์ƒํ™”๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํด๋ž˜์Šค๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ผ๋ฐ˜ ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ๋ชจ๋‘ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ณตํ†ต ๊ธฐ๋Šฅ๊ณผ ์•ฝ์†๋œ ๊ธฐ๋Šฅ๋„ ํ•จ๊ป˜ ์žˆ๋‹ค. ์ ‘๊ทผ์ œ์–ด์ž๋„ ์ž์œ ๋กญ๊ฒŒ ์ง€์ •๊ฐ€๋Šฅํ•˜๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋“ค์ด ๊ณตํ†ต ์—†์ด ์ œ๊ฐ๊ฐ ๋™์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. ํ˜น์€ ๋‹ค์ค‘ ๊ตฌํ˜„์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์—ญํ• ๋กœ ๋‚˜๋ˆŒ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ถ”์ƒ ํด๋ž˜์Šค์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ํ˜•ํƒœ๋Š” ์œ ์ง€ํ•˜๋ฉด์„œ ์„ธ๋ถ€์ ์ธ ๋™์ž‘์„ ๋‹ค๋ฅด๊ฒŒ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ™์€ ํƒ€์ž…๋ผ๋ฆฌ ๋ฌถ๊ณ  ๊ณตํ†ต ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

 ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ƒ์†

class ABC extends myClass implements myInterface1, MyInterface2 {

}
์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฏธ์™„์„ฑ ๋ฉ”์„œ๋“œ๋ฅผ ์™„์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์†ํ•˜๋Š” ์˜๋ฏธ์ธ extends๊ฐ€ ์•„๋‹Œ ๊ตฌํ˜„ํ•˜๋Š” ์˜๋ฏธ์ธ implements๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ชจ๋‘ ๊ตฌํ˜„๋˜์–ด์•ผ ์ œ๋Œ€๋กœ ์ž‘๋™๋œ๋‹ค.

1. ํ•œ ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค์ค‘ ์ƒ์† ๊ฐ€๋Šฅํ•˜๋‹ค.

ํด๋ž˜์Šค๋Š” ๋‘ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ๋™์ผํ•œ ์ด๋ฆ„์˜ ํ•„๋“œ ํ˜น์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์–ด๋А ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํ•„๋“œ(๋ฉ”์„œ๋“œ)๋ฅผ ๊ฐ€์ ธ์˜ฌ์ง€ ํ˜ผ๋™ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ  ๊ทธ๊ฒƒ์„ ๋ง‰๊ณ ์ž ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ๋‹ค์ค‘ ์ƒ์†ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค์ค‘ ์ƒ์†ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ชจ๋“  ํ•„๋“œ๊ฐ€ public static final๋กœ ์ •์˜๋˜์–ด ๊ฐ ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ ๊ณต๊ฐ„์ด ๊ฒน์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ ์–ด์ฐจํ”ผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์™„์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋˜๋Š” ๋ถ€๋ถ„์ด ์—†๋‹ค.

2. ํ•œ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์™€ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋™์‹œ์— ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํด๋ž˜์Šค๋งŒ ๋‹ค์ค‘ ์ƒ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฌธ์ œ๋  ๊ฑด ์—†๋‹ค. ๋‹ค๋งŒ ์ƒ์†ํ•  ๊ฒฝ์šฐ ์ˆœ์„œ์— ์œ ์˜ํ•ด์•ผํ•œ๋‹ค. ๋ฐ˜๋“œ์‹œ ์ฒ˜์Œ์— ํด๋ž˜์Šค ๋จผ์ € ์ƒ์†ํ•ด์ฃผ๊ณ  ๊ทธ ๋‹ค์Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•ด์•ผํ•œ๋‹ค.

3. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋•Œ implements๊ฐ€ ์•„๋‹Œ extends๋กœ ์ƒ์†ํ•ด์•ผํ•œ๋‹ค. ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž๋ฉด interface myInterface1 extends myInterface2์˜ ํ˜•์‹์ด ๋  ๊ฒƒ์ด๋‹ค.

4. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค๋Š” ์™„์„ฑ๋˜์ง€ ์•Š์€ ํ…Œ๋‘๋ฆฌ๋งŒ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™„์„ฑ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€๋‹Œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ธํ„ฐํŽ˜์ด์Šค์˜ ์˜๋ฏธ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜๋‹ˆ ํด๋ž˜์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์ƒ์†๋˜์ง€ ๋ชปํ•œ๋‹ค.

5. ๋ชจ๋“  ์ž์‹ ํด๋ž˜์Šค์˜ ๊ตฌํ˜„ ๋ฉ”์„œ๋“œ๋Š” public๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ•˜์œ„ ํด๋ž˜์Šค์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ์ˆ˜ํ–‰๋  ๋•Œ ์ ‘๊ทผ ์ง€์ •์ž๋Š” ๋ถ€๋ชจ ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ ์ง€์ •์ž์™€ ์ ‘๊ทผ ๋ฒ”์œ„๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ์ปค์•ผ ํ•œ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ๋“  ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋Š” public์œผ๋กœ ๊ฐ•์ œ๋˜์–ด์žˆ์–ด์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๋ชจ๋“  ์ž์‹ ํด๋ž˜์Šค๋Š” public ์ ‘๊ทผ ์ง€์ •์ž๋งŒ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•์€ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๋™์ผํ•˜๋‹ค.

 

 

 

์ธํ„ฐํŽ˜์ด์Šค์˜ ๋””ํดํŠธ ๋ฉ”์„œ๋“œ

interface myInterface {
    public default void myMethod {
    
    }
}
myInterface๊ฐ€ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ์ƒ์†๋˜์–ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ํด๋ž˜์Šค์— ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ์™€์ค‘์— ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด? myInterface๋ฅผ ์ƒ์†ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ ๋ฉ”์„œ๋“œ๋Š” ์ƒ์†ํ•œ ํด๋ž˜์Šค์—์„œ ๋ชจ๋‘ ๊ตฌํ˜„๋˜์–ด์•ผํ•˜๋Š”๋ฐ, ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์— ๊ตฌํ˜„๋˜์ง€ ์•Š์•„์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์ถ”๊ฐ€๋œ ๊ฒƒ์ด default ๋ฉ”์„œ๋“œ์ด๋‹ค. ๋””ํดํŠธ ๋ฉ”์„œ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด๋ถ€์— ์™„์„ฑ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

 

 ์ธํ„ฐํŽ˜์ด์Šค์˜ super

interface myInterface {
    default void myMethod(){
        System.out.println("MyInterface์˜ ๋ฉ”์„œ๋“œ ์ถœ๋ ฅ");
     }
}

class myClass implements myInterface {
    @Override
    public void myMethod(){
        myInterface.super.myMethod();
        System.out.println("myClass์˜ ๋ฉ”์„œ๋“œ ์ถœ๋ ฅ");
    }
}
myClass.myMethod( );๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด, super๋กœ ์ธํ•ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ ํ›„ ๊ทธ ๋‹ค์Œ์— ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๊ฒƒ์ด๋‹ค. super๋ฅผ ํด๋ž˜์Šค์— ์‚ฌ์šฉํ•  ๋•, ๊ทธ๋ƒฅ ๋ฉ”์„œ๋“œ๋ช… ์•ž์— super.์„ ๋ถ™์ด๋ฉด ๋๋Š”๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฒฝ์šฐ ์ธํ„ฐํŽ˜์ด์Šค๋ช….super.๋ฉ”์„œ๋“œ๋ช…์„ ๋ถ™์˜€๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ์•„๋งˆ ๊ทธ ์ด์œ ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์ค‘ ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์–ด๋–ค ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒƒ์ธ์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์ ์–ด์•ผํ•˜๋Š” ๋“ฏ ํ•˜๋‹ค.

 

 

 

 ์ธํ„ฐํŽ˜์ด์Šค์˜ static

interface MyInterface {
    static void greet() {
        System.out.println("Hello from Interface!");
    }
}

public class Main {
    public static void main(String[] args) {
        MyInterface.greet(); 
    }
}
์ธํ„ฐํŽ˜์ด์Šค์— static ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฐ ๊ฒฝ์šฐ Main ํด๋ž˜์Šค์— ๋ณด์ด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ธํ„ฐํŽ˜์ด์Šค์˜ greet ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์‹ ๊ฒฝ์“ธ ๊ฒƒ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ ๊ฐ€๋Šฅํ•˜๋ฉฐ, static ๋ฉ”์„œ๋“œ๋ฅผ ์™ธ๋ถ€๋กœ ๋นผ์ง€ ์•Š์•„๋„ ๋˜์–ด ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„  ์ข€ ๋” ํŽธ๋ฆฌํ•ด์ง„๋‹ค.

 

 

๐Ÿ“š ์ฐธ๊ณ ํ•œ ์ฑ…

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

- ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค -

 

 

๐Ÿฅ ๐Ÿฅ ๐Ÿฅ

 


 

โœ”๏ธ   final ์ œ์–ด์ž_ 379p

 

final ๋ณ€์ˆ˜

ํ•œ ๋ฒˆ ๋Œ€์ž…๋œ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ํ•œ ๋ฒˆ ๋Œ€์ž…๋œ ๊ฐ’์ด ์ตœ์ข… ๊ฐ’์ด ๋œ๋‹ค.

class A {
    int a;
    final int b;
    
    A() {
        a = 3;
        b = 5;
    }
}

class B {
    int a = 3;
    final int b = 5;
    
    B() {
    }
}
ํด๋ž˜์Šค A๋Š” ์„ ์–ธ๊ณผ ๊ฐ’์˜ ๋Œ€์ž…์„ ๋ถ„๋ฆฌํ•˜์˜€๋‹ค. ํด๋ž˜์Šค B๋Š” ์„ ์–ธ๊ณผ ๊ฐ’์„ ๋™์‹œ์— ๋Œ€์ž…ํ–ˆ๋‹ค. ์ด๋•Œ final ํ•„๋“œ๋ฅผ ๊ฐ’๊ณผ ๋™์‹œ์— ์„ ์–ธํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ๊ฐ’์˜ ์ดˆ๊ธฐํ™”๋Š” ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑ์ž์—์„œ ์ด๋ค„์ ธ์•ผํ•œ๋‹ค. final ํ•„๋“œ๋Š” ์ผ๋ฐ˜ ํ•„๋“œ์™€ ๋‹ค๋ฅด๊ฒŒ, ๊ฐ•์ œ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ’์ด ๋Œ€์ž…ํ•œ ํ›„ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ํ–‰์œ„ ์ž์ฒด๋Š” ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

Q. ์™œ ์ƒ์„ฑ์ž์—์„œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋„๋ก ํ• ๊นŒ?

A.
๊ทธ ์ด์œ ๋Š” ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.
class Car {
    final String model;

    Car(String model) {
        this.model = model;
    }

    void printModel() {
        System.out.println("์ฐจ ๋ชจ๋ธ ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? : " + model);
    }
}

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car("Tesla");
        Car car2 = new Car("BMW");

        car1.printModel(); // Car model: Tesla
        car2.printModel(); // Car model: BMW
    }
}

๋งŒ์•ฝ ์„ ์–ธ๊ณผ ๊ฐ’์„ ๊ฐ™์ด ๋Œ€์ž…ํ•œ๋‹ค๋ฉด ๊ฐ ๊ฐ์ฒด๋งˆ๋‹ค ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ๋งŒ ํ•  ๊ฒƒ์ด๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด final ๋ณ€์ˆ˜ ๊ฐ’์„ ๋Œ€์ž…ํ•œ๋‹ค๋ฉด ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๊ฐ์ฒด๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 ์ƒ์ˆ˜ ์˜์—ญ

ํž™ ์˜์—ญ์˜ Permanent area(๊ณ ์ • ์˜์—ญ)์— ์ƒ์„ฑ๋˜์–ด Java ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฃŒ๊นŒ์ง€ ๊ณ„์† ์œ ์ง€๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ

class A{
    int a;
    final int b;
    
    A() {
        a = 3;
        b = 5;
    }
}
ํ•„๋“œ๋Š” ๋ฉค๋ฒ„์ด๋ฏ€๋กœ final ํ•„๋“œ์ด๋“ , ์•„๋‹ˆ๋“  ๊ฐ์ฒด ์†์— ํฌํ•จ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๋•Œ final๋กœ ์„ ์–ธ๋œ ํ•„๋“œ ๊ฐ’์€ ์ƒ์ˆ˜ ์˜์—ญ์— 1๊ฐœ๊ฐ€ ๋ณต์‚ฌ๋œ๋‹ค. final๋กœ ์„ ์–ธ๋œ ๋ชจ๋“  ํ•„๋“œ ๊ฐ’์€ ์ƒ์ˆ˜ ์˜์—ญ์— ๋ณต์‚ฌ๋˜๋ฏ€๋กœ ์ฒซ ๋ฒˆ์งธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ƒ์ˆ˜ ์˜์—ญ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋•Œ ๊ฐ’์˜ ๋ณต์‚ฌ๋Š” ์„ ์–ธํ•œ ํ›„ ์ตœ์ดˆ๋กœ ๊ฐ’์ด ์ดˆ๊ธฐํ™”๋  ๋•Œ ๋”ฑ ํ•œ ๋ฒˆ ์ผ์–ด๋‚œ๋‹ค.

final์ด ๋ถ™์ง€ ์•Š์€ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ณ€์ˆซ๊ฐ’์€ ์ž์‹ ์ด ๋งŒ๋“ค์–ด์ง„ ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์‚ฌ๋ผ์ง„๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง„ ๊ทธ ๋ณ€์ˆ˜๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด์„œ ๋ณต์‚ฌ๋ณธ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๋†“๊ณ  ์›๋ณธ์ด ์‚ญ์ œ๋˜๋”๋ผ๋„ ๊ทธ ๊ฐ’์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

 

- ์ƒ์ˆ˜ํ’€ ์˜์—ญ

 

๋ฉ”๋ชจ๋ฆฌ ์ƒ์ˆ˜ํ’€์˜์—ญ ์ด๋ž€?

8. ๋ฉ”๋ชจ๋ฆฌ ์ƒ์ˆ˜ํ’€์˜์—ญ? ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ ๊ฐœ์ธ์ ์œผ๋กœ ์ปดํ“จํ„ฐ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋ฐ”๋กœ ๋ฉ”๋ชจ๋ฆฌ์ด๋‹ค. ๋ฐ์ดํ„ฐ ์˜์—ญ(Data Area)๋ฐ์ดํ„ฐ ์˜์—ญ์€ ์ „์—ญ ๋ณ€์ˆ˜์™€ static ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๋Š”

coderbycode.tistory.com

 

 

 

final ๋ฉ”์„œ๋“œ

์ตœ์ข… ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ ๋ฉ”์„œ๋“œ ๊ธฐ๋Šฅ ๋ณ€๊ฒฝ์ด ์ด๋ค„์ง€์ง€ ์•Š๋Š”๋‹ค. (์˜ค๋ฒ„๋ฆฌ์ด๋”ฉ X)

class A {
    void abc() {
    }
    
    final void bcd() {
    }
}

 

 

final ํด๋ž˜์Šค

์ตœ์ข… ํด๋ž˜์Šค๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ๋” ์ด์ƒ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ์—†์œผ๋ฉฐ ์ƒ์† ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค.

final class A{

}
final ํด๋ž˜์Šค์™€ ๋น„์Šทํ•œ ๊ฒƒ์ด String ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค. String ํด๋ž˜์Šค๋„ final ํด๋ž˜์Šค๋กœ ์ •์˜๋˜์–ด ์žˆ์–ด์„œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ String ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์ž์‹ ํด๋ž˜์Šค๋กœ ์ด์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

 

Q. String๊ณผ final์˜ ์ฐจ์ด์ ์€?

A.
String์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ํ•œ ๋ฒˆ ์ƒ์„ฑ๋œ ๋ฌธ์ž๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ ์ ์€ final๊ณผ ๊ฐ™์ง€๋งŒ, String์€ ์ฐธ์กฐ(์ฃผ์†Œ)๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 
public class Test {
    public static void main(String[] args) {
        String str = "Hello";
        str = "World";
        System.out.println(str);
    }
}


"Hello"์˜ ๊ฐ’์ด "World"๋กœ ๋ณ€๊ฒฝ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค. str์ด ์ƒˆ๋กœ์šด ์ฐธ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ๊ฑฐ๊ธฐ์— "World" ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, String์€ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ•  ์ˆœ ์žˆ๋‹ค.

 

 

 

- string

 

String class๊ฐ€ final์ธ ์ด์œ , String์˜ ๋ถˆ๋ณ€์„ฑ (Immutable)

Java์˜ final์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ String class๊ฐ€ ๋Œ€ํ‘œ์ ์ธ final class๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , String class๊ฐ€ final์œผ๋กœ ์ •์˜๋œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•˜์—ฌ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Java String String str1 = new String("Hello"); // new

wildeveloperetrain.tistory.com

 

 

 


 

 

 

โœ”๏ธ   abstract ์ œ์–ด์ž_ 387p

 

 

 ์ถ”์ƒ ๋ฉ”์„œ๋“œ

์ค‘๊ด„ํ˜ธ๊ฐ€ ์—†์œผ๋ฉฐ, ๋ฌด์Šจ ๊ธฐ๋Šฅ์„ ์ •์˜ํ• ์ง€ ์ •ํ•ด์ง€์ง€ ์•Š์€ ๋ฏธ์™„์„ฑ ๋ฉ”์„œ๋“œ๋‹ค.

abstract class Animal {
    abstract void cry() {}
}

class Cat extends Animal {
    void cry() {
        System.out.println("์•ผ์˜น");
    }
}

class Dog extends Animal {
    void cry() {
        System.out.println("์™ˆ์™ˆ");
    }
}
Animal animal1 = new Cat();
Animal animal2 = new Dog();

animal1.cry();
animal2.cry();
์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ 1๊ฐœ ์ด์ƒ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ์ •์˜ํ•ด์•ผํ•œ๋‹ค. abstract ์ œ์–ด์ž์˜ ์žฅ์ ์€ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Cat ํด๋ž˜์Šค์™€ Dog ํด๋ž˜์Šค์— cry ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ cRy ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ผ๋ฐ˜ํด๋ž˜์Šค๋กœ ์ •์˜ํ–ˆ์„ ๊ฒฝ์šฐ ์ถœ๋ ฅ์ด ๋˜์ง€ ์•Š์„ ๋ฟ ๋ณ„๋‹ค๋ฅธ ๊ฒฝ๊ณ ๋ฌธ์ด ๋œจ์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ abstract ์ œ์–ด์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ์ด๋ ‡๊ฒŒ ์ •์˜๋œ ๋ฉ”์„œ๋“œ์™€ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

์‹ค์ œ ์—…๋ฌด์—์„œ๋Š” ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์–ด๋–ค ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ  ์—‰๋šฑํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋””์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋Š”์ง€ ์ฐพ์•„์•ผํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ abstract๋Š” ์ด๋ฅผ ์ƒ์†ํ•œ ๋ชจ๋“  ์ž์‹ ํด๋ž˜์Šค ๋‚ด๋ถ€์—๋Š” ํ•ญ์ƒ cry( )๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

 

 

 

 

๐Ÿ“š ์ฐธ๊ณ ํ•œ ์ฑ…

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

- ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค -

 

 

๐Ÿฅ ๐Ÿฅ ๐Ÿฅ

 


 

โœ”๏ธ   ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ_ 329p

 

 ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

๋ถ€๋ชจ ํด๋ž˜์Šค์—๊ฒŒ ์ƒ์†๋ฐ›์€ ๋ฉ”์„œ๋“œ์™€ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋ถ€๋ชจ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ์ด ๋งŒ๋“  ๋ฉ”์„œ๋“œ๋กœ ๋ฎ์–ด์“ฐ๋Š” ๊ฐœ๋…

class A {
    void print() {
         System.out.println("A ํด๋ž˜์Šค")
    }
}

class B extends A {
    @Override
    void print() {
         System.out.println("B ํด๋ž˜์Šค")
    }
}

public class MethodOverrideing_1 {
     public static void main(String[] args) {
         
         A aa = new A();
         aa.print();
         
         B bb = new B();
         bb.print();
         
         A ab = new B();
         ab.print();
     }
}
๋จผ์ € A aa = new A( );์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์„ ์‚ดํŽด๋ณด๋ฉด ํž™ ๋ฉ”๋ชจ๋ฆฌ์— A( ) ์ƒ์„ฑ์ž๋กœ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ์ด๋ฅผ A ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜ aa๊ฐ€ ์ด ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋•Œ A ๊ฐ์ฒด ๋‚ด๋ถ€์—๋Š” ์‹ค์ œ ๋ฉ”์„œ๋“œ์˜ ์œ„์น˜ ์ •๋ณด๋งŒ ์ €์žฅ๋˜์–ด์žˆ๊ณ , ์‹ค์ œ print( )๋Š” ๋ฉ”์„œ๋“œ ์˜์—ญ์— ์ •์˜๋˜์–ด ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ๋‹น์—ฐํ•˜๊ฒŒ "A ํด๋ž˜์Šค"๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

B bb = new B( );๋Š” ์ฒ˜์Œ์— A ๊ฐ์ฒด ๋‚ด์˜ print( )๊ฐ€ ๋ฉ”์„œ๋“œ ์˜์—ญ์— ์ƒ์„ฑ๋˜๊ณ  ๊ทธ ํ›„ B ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด A๊ฐ์ฒด์˜ ์‹ค์ œ print( )๋Š” ๋ฉ”์„œ๋“œ ์˜์—ญ์— ์ €์žฅ๋˜๊ณ  ๊ทธ ํ›„  B ๊ฐ์ฒด์˜ print( ) ๋ฉ”์„œ๋“œ๋„ ๊ฐ™์€ print( ) ์˜์—ญ์— ์ €์žฅ๋œ๋‹ค. ์ฆ‰ ํ›„์— ์ƒ๊ธด B์˜ print( ) ๋ฉ”์„œ๋“œ๊ฐ€ ๋จผ์ € ์ƒ๊ธด A์˜ print( ) ๋ฉ”์„œ๋“œ๋ฅผ ๋ฎ์–ด์“ฐ๊ธฐ, ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ bb.print( )๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด "B ํด๋ž˜์Šค"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

A ab = new B( )์ธ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž. ์ฒ˜์Œ ์ƒ์„ฑ๋˜๋Š” ๊ณผ์ •์€ B bb = new B( );์™€ ๊ฐ™๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋ฅธ ์ ์€ A ํƒ€์ž…์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ฐธ์กฐ ๋ณ€์ˆ˜๊ฐ€ A ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ab.print( )๋Š” ์‹ค์ œ A ๊ฐ์ฒด์˜ print( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๋˜๋Š”๋ฐ, A ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” print( ) ๋ฉ”์„œ๋“œ๋Š” ์ด๋ฏธ B ๊ฐ์ฒด๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋œ ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ๊ฒฐ๋ก ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฐ’์€ "B ํด๋ž˜์Šค"๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋ฎ์–ด์“ฐ๊ธฐ๋Š” ์•„๋‹ˆ๋‹ค. ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์€ ์ด์ „์— ์žˆ๋˜ ๊ฒƒ์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ํŒŒ์ผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ์›๋ž˜ ์žˆ๋˜ ๊ฒƒ์— ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ๊ฐ€ ์˜ฌ๋ผ ํƒ€๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

 ๋ถ€๋ชจ ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ

class Animal {
    void cry() {
         
    }
}

class Bird extends Animal {
    void cry() {
         System.out.println("์งน์งน")
    }
}

class Cat extends Animal {
    void cry() {
         System.out.println("๋ƒ์˜น")
    }
}

class Dog extends Animal {
    void cry() {
         System.out.println("๋ฉ๋ฉ")
    }
}

public class MethodOverrideing_1 {
     public static void main(String[] args) {
         
         Animal bb = new Bird();
         Animal cc = new Cat();
         Animal dd = new Dog();
         
         bb.cry();
         cc.cry();
         dd.cry();
     }
}
์ฐธ์กฐ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ Animal ํƒ€์ž…์ด์ง€๋งŒ, ๊ฐ๊ฐ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋์œผ๋ฏ€๋กœ cry( ) ๋ฉ”์„œ๋“œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ธ๋‹ค. ์—ฌ๊ธฐ์„œ Animal ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์•„๋ฌด๋Ÿฐ ๊ธฐ๋Šฅ๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” cry( ) ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๊ธฐ์— ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋ณด์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ๋‹คํ˜•์  ํ‘œํ˜„์œผ๋กœ ์ž์‹ ํด๋ž˜์Šค๋“ค์˜ ๊ฐ์ฒด๋ฅผ ๋ถ€๋ชจ ํด๋ž˜์Šค์ธ Animal ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋งŒ์ผ ๋ถ€๋ชจ ํด๋ž˜์Šค์— cry( ) ๋ฉ”์„œ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ๋‹ค๋ฅธ ์ž์‹ ํด๋ž˜์Šค๋Š” cry( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

 ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ

์ด๋ฆ„์€ ๋™์ผํ•˜์ง€๋งŒ, ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ™์€ ๊ณต๊ฐ„์— ์ •์˜ํ•˜๋Š” ๊ฒƒ.

 

Q. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๊ณผ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ์˜ ์ฐจ์ด์ ์€?

A. ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊นŒ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ผํ•œ ํŒŒ์ผ์„ ๊ฐ™์€ ๊ณต๊ฐ„์— ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋˜๊ณ , ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋Š” ๋‹ค๋ฅด์ง€๋งŒ ์ผ๋ฆ„๋งŒ ๋™์ผํ•œ ํŒŒ์ผ์„ ๊ฐ™์€ ๊ณต๊ฐ„์— ๋ณต์‚ฌํ•œ ๊ฒƒ์œผ๋กœ ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค.

 

class Car {
    void sound1() {
         System.out.println("๋ถ€๋ฆ‰๋ถ€๋ฆ‰")
    }
    
    void sound2() {
        System.out.println("๋ถ€๋ฅด๋ฆ‰๋ถ€๋ฅด๋ฆ‰")
    }
}

class Car1 extends Car {
    void sound1() {
         System.out.println("๋นต๋นต")
    }
    
    void sound2(int a) {
         System.out.println("๋น ์•„์•™")
    }
}
์—ฌ๊ธฐ์„œ sound1์€ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๋œ๋‹ค. ์ƒ์†๋ฐ›์€ ๋ฉ”์„œ๋“œ์™€ ๋ฆฌํ„ด ํƒ€์ž… ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. sound2๋Š” Car ํด๋ž˜์Šค์—์„œ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ๋ฉ”์„œ๋“œ์˜€์ง€๋งŒ, ํด๋ž˜์Šค Car1์—์„œ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ •์ˆซ๊ฐ’ 1๊ฐœ๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฏ€๋กœ ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ๋‹ฌ๋ผ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ด๋•Œ ํด๋ž˜์Šค Car1์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋Š” ์ด 3๊ฐœ๊ฐ€ ๋œ๋‹ค. sound1์€ Car ํด๋ž˜์Šค์™€ Car1 ํด๋ž˜์Šค ๋ชจ๋‘ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋กœ 1๊ฐœ, Car์— ์žˆ๋Š” sound2 ๋ฉ”์„œ๋“œ, Car1์— ์žˆ๋Š” ์ •์ˆซ๊ฐ’ ํ•˜๋‚˜๋ฅผ ๋ฐ›๋Š” sound2 ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 

๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๊ณผ ์ ‘๊ทผ์ง€์ •์ž

์˜ค๋ฒ„๋ผ์ด๋”ฉํ•  ๋•Œ๋Š” ์ƒ์†๋ฐ›์€ ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ ์ง€์ •์ž์™€ ๋ฒ”์œ„๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ๋„“์€ ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

class A {
    protected void abc() {}
}

class B extends A {
    public void abc() {}
}

class C extends A {
    protected void abc() {}
}

class D extends A {
    void abc() {}
}

class E extends A {
    private void abc() {}
}
์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•  ๋•Œ ์ ‘๊ทผ์ง€์ •์ž์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋” ๋„“์€ ์ ‘๊ทผ์ง€์ •์ž๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค ํ–ˆ์œผ๋‹ˆ, void abc( ) ์™€ private void abc( )๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ์ธ์Šคํ„ด์Šค ํ•„๋“œ์˜ ์ค‘๋ณต_ 340p

 

 ์ธ์Šคํ„ด์Šค ํ•„๋“œ์˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

class A {
    int m = 3;
}

class B extends A {
	int m = 4;
}
์ธ์Šคํ„ด์Šค ํ•„๋“œ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์ •์˜ํ•ด๋„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ €์žฅ ๊ณต๊ฐ„์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ์‚ดํŽด๋ณด์•˜์„๋•Œ, ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ์˜์—ญ์— ๋ถ€๋ชจ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ทธ ์œ„์— ์ž์‹ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๋ฐœ์ƒ๋œ๋‹ค๊ณ  ์„ค๋ช…ํ–ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ํ•„๋“œ์˜ ๊ฒฝ์šฐ B ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ์ „ ๋ถ€๋ชจ ๊ฐ์ฒด A ๊ฐ์ฒด๊ฐ€ ๋จผ์ € ์ƒ์„ฑ๋  ๊ฒƒ์ด๊ณ  ๊ทธ ํ›„ ํด๋ž˜์Šค B์—์„œ ์ถ”๊ฐ€ํ•œ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง„ ๋ฉ”์„œ๋“œ ์ƒ์„ฑ ๊ณผ์ •๊ณผ ๋น„์Šทํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋Š” m=3๊ณผ m=4์ธ ์ด ๋‘ ๊ฐœ์˜ ํ•„๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์ €์žฅ๊ณต๊ฐ„์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋œ๋‹ค๋Š” ๊ฒƒ์ด ํฐ ์ฐจ์ด๊ฐ€ ๋˜๊ฒ ๋‹ค.

๋งŒ์•ฝ B b = new B( ); ์„ ์–ธํ•˜๊ณ  b.m์˜ ๊ฐ’์„ ํ™•์ธํ•  ๊ฒฝ์šฐ 4๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. b๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฒˆ์ง€๊ฐ€ 100๋ฒˆ์ธ ๊ฒฝ์šฐ, 100๋ฒˆ์—๋Š” B ๊ฐ์ฒด์˜ m = 4 ๊ฐ’์ด ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. A a = new B( )๋กœ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ A ํƒ€์ž…์ด๋ฏ€๋กœ A ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์„ ๊ฒƒ์ด๊ณ  ๊ทธ ๋ฒˆ์ง€๊ฐ€ 200์œผ๋กœ B ๊ฐ์ฒด์˜ ๋ฒˆ์ง€์™€ ๋‹ค๋ฅผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฐ์ฒด๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

์ •์  ํ•„๋“œ์˜ ์ค‘๋ณต

A.m = 3;
B.m = 4;

B b = new B();
b.m = 4;
์ •์  ํ•„๋“œ์˜ ์ €์žฅ ๊ณต๊ฐ„์€ ์ •์  ์˜์—ญ์˜ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋งŒ๋“ค์–ด์ง€๊ณ  ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ํ•œ๋‹ค. ์Šคํƒ์— ํฌํ•จ๋œ A๊ฐ์ฒด์™€ B๊ฐ์ฒด์—๋Š” m์˜ ๊ฐ’์ด ์ €์žฅ๋˜์–ด์žˆ์ง€ ์•Š๊ณ , ํด๋ž˜์Šค ์˜์—ญ ์–ด๋””์— ์ €์žฅ๋˜์–ด์žˆ๋Š”์ง€ ๊ฐ€๋ฆฌํ‚ฌ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํด๋ž˜์Šค A์™€ B ๋‚ด์— ํฌํ•จ๋œ ์ •์  ํ•„๋“œ์˜ ์ €์žฅ๊ณต๊ฐ„์€ ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ •์ ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋–ค์ง€ ์‚ดํŽด๋ณด๋ฉด, ์ •์ ํ•„๋“œ์™€ ๊ฐ™์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ •์ ๋ฉ”์„œ๋“œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ๊ณต๊ฐ„์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ์ค‘๋ณต์ด ๋˜์–ด ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ๋งŒ ํ•ด๋‹น๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ํ•„๋“œ, ์ •์  ํ•„๋“œ, ์ •์  ๋ฉ”์„œ๋“œ ๋ชจ๋‘ ๊ฐ ๊ฐ์ฒด์˜ ์ €์žฅ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   super_ 349p

 

super ํ‚ค์›Œ๋“œ

๋ถ€๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ํ•„๋“œ๋ช…์˜ ์ค‘๋ณต์œผ๋กœ ๊ฐ€๋ ค์ง„ ๋ถ€๋ชจ์˜ ํ•„๋“œ ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

 

class A {
    void abc() {
        System.out.println("A ํด๋ž˜์Šค์˜ abc()");
    }
}

class B extends A{
    void abc() {
        System.out.println("B ํด๋ž˜์Šค์˜ abc()");
    }
    
    void bcd() {
         super.abc();
    }
}
B bb = new B();

bb.bcd();
super์„ ์จ์„œ abc๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์ธ A ํด๋ž˜์Šค์˜ abc( )๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

 

 

Q. this์™€ super์˜ ์ฐจ์ด์ ์€?

A. this๋Š” ์ž๊ธฐ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช…์ด๋‹ค. this( ) ๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ์˜ ๋˜ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์ƒ์„ฑ์ž ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ํ•ญ์ƒ ์ฒซ ์ค„์— ์œ„์น˜ํ•ด์•ผํ•œ๋‹ค. super๋Š” ๋ถ€๋ชจ์˜ ๊ฐ์ฒด, super( )๋Š” ๋ถ€๋ชจ์˜ ์ƒ์„ฑ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

 

class A {
    void abc() {
        System.out.println("A ํด๋ž˜์Šค์˜ abc()");
    }
}

class B extends A{
    void abc() {
        System.out.println("B ํด๋ž˜์Šค์˜ abc()");
    }
    
    void bcd() {
         abc();
    }
}
B bb = new B();

bb.bcd();

 

super์„ ์“ฐ์ง€ ์•Š๊ณ  abc( )๋ฅผ ์ž์‹ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์—์„œ ํ˜ธ์ถœํ•˜๊ฒŒ๋˜๋ฉด this ํ‚ค์›Œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ์‹คํ–‰๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํด๋ž˜์Šค B์— ์žˆ๋Š” abc( ) ์‹คํ–‰ ์ฝ”๋“œ๋Š” ํด๋ž˜์Šค B ๋‚ด๋ถ€์— ์žˆ๋Š” abc( )๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋งŒ์•ฝ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ฝ”๋“œ๊ฐ€ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์‹คํ–‰๋˜๊ธธ ์›ํ•˜๋Š” ๊ฒฝ์šฐ superํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.

 

 

 

 super( ) ๋ฉ”์„œ๋“œ

class A {
    A() {
        this(3);
        System.out.println("A ์ƒ์„ฑ์ž1")
    }
    
    A(int a) {
        System.out.println("A ์ƒ์„ฑ์ž2")
    }
}

class B extends A {
    B() {
         this(3);
         System.out.println("B ์ƒ์„ฑ์ž1")
    }
    
    B(int a) {
         System.out.println("B ์ƒ์„ฑ์ž2")
    }
}
A aa1 = new A();
A aa2 = new A(3);

B bb1 = new B();
B bb2 = new B(3);
aa1์€ ํด๋ž˜์Šค A์— ์žˆ๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. ๊ฐ€์žฅ ์ฒซ ์ฝ”๋“œ๋Š” this(3)์œผ๋กœ ๋‚ด๋ถ€์— ์žˆ๋Š” ์ •์ˆ˜๊ฐ’ ํ•˜๋‚˜๋ฅผ ๋ฐ›๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์•„ ์‹คํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด A(int a)๊ฐ€ ์‹คํ–‰๋˜๊ณ  "A ์ƒ์„ฑ์ž2"๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ  ๊ทธ ๋‹ค์Œ "A ์ƒ์„ฑ์ž1"์ด ์ถœ๋ ฅ๋œ๋‹ค. aa2๋Š” 3์„ ์ธ์ž๋กœ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค A์— ์žˆ๋Š” A(int a)๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ์ปดํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ๋ถ™์ด๋Š” ๊ฒƒ ์—†์ด "A ์ƒ์„ฑ์ž2"๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

bb1์€ ๋ฉ”์„œ๋“œ B์— ์žˆ๋Š” this(3)๊ฐ€ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค. this๋กœ ๋‚ด๋ถ€์— ์žˆ๋Š” B(int a)๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ์ด๋•Œ B(int a)์˜ ๊ฐ€์žฅ ์ฒซ ์ค„์—” super๊ฐ€ ๋ถ™๊ฒŒ๋œ๋‹ค. ๋ฌผ๋ก  ์ด super๋Š” ์ปดํŒŒ์ผ์ด ์ž๋™์ ์œผ๋กœ ๋ถ™์ธ ๊ฒƒ์ด๋‹ค. super๋กœ ์ธํ•ด ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋˜๊ณ  ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž์— ์žˆ๋Š” this(3)์œผ๋กœ ์ธํ•ด A(int a)๊ฐ€ ์‹คํ–‰๋˜์–ด "A ์ƒ์„ฑ์ž2"๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ถœ๋ ฅ๋œ๋‹ค. ๊ทธ ๋‹ค์Œ์€ "A ์ƒ์„ฑ์ž1"์ด ์ถœ๋ ฅ์œผ๋กœ A( ) ๋ฉ”์„œ๋“œ๋ฅผ ๋งˆ๋ฌด๋ฆฌ ์ง“๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์‹œ ํด๋ž˜์Šค B๋กœ ๋Œ์•„์™€ super๊ฐ€ ์ง„ํ–‰๋œ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ "B ์ƒ์„ฑ์ž 2"๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ   B( ) ๋ฉ”์„œ๋“œ์˜ "B ์ƒ์„ฑ์ž1"๋กœ ๋งˆ๋ฌด๋ฆฌ๋œ๋‹ค. ๊ฐ์ฒด bb2๋Š” ํด๋ž˜์Šค B์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋งŒ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๋ฟ, ๋‚˜๋จธ์ง€ ๊ณผ์ •์€ ๋™์ผํ•˜๋‹ค.

์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์‚ฌ์‹ค์€ ๋ชจ๋“  ์ƒ์„ฑ์ž์˜ ์ฒซ ์ค„์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ this( ) ๋˜๋Š” super( )๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์ผ ์•„๋ฌด๊ฒƒ๋„ ์จ์ฃผ์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” super( )๋ฅผ ์ž๋™์œผ๋กœ ์‚ฝ์ž…ํ•œ๋‹ค. ์ฆ‰, ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋Š” ํ•ญ์ƒ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ํ•œ ๋ฒˆ์€ ํ˜ธ์ถœ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ชจํด๋ž˜์Šค์— ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. (super( )๊ฐ€ ์ž๋™์ ์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š”๋ฐ, ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์ด ์–ด๋–ค ์ธ์ž๋ฅผ ๋ฐ›๋Š” ๋ฉ”์„œ๋“œ๋งŒ ์žˆ์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฐœ์ƒ)

 

 

 

 ์ •๋ฆฌ

super( )๋Š” ์ž์‹ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ๊ฐ€์žฅ ์ฒซ ์ค„์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ํ•œ๋‹ค.

  this.๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์™€ ์ž์‹ํด๋ž˜์Šค์— ์ค‘๋ณต๋˜๋Š” ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ž์‹ํด๋ž˜์Šค์—์„œ ๊ทธ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋‚ด๋ถ€ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก this.๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

 

 



 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 


 

 

โœ”๏ธ   ์ƒ์†_ 307p

 

 ์ƒ์†

๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„(ํ•„๋“œ, ๋ฉ”์„œ๋“œ, ์ด๋„ˆ ํด๋ž˜์Šค)๋ฅผ ๋‚ด๋ ค๋ฐ›์•„ ์ž์‹ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ํฌํ•จ์‹œํ‚ค๋Š” ์ž๋ฐ” ๋ฌธ๋ฒ• ์š”์†Œ

class Human {
     String name;
     int age;
     void eat() {}
     void sleep() {}
}

class Student extends Human {
    int studentID;
    void goToSchool() {}
}
Human h = new Human();
h.name = "๊น€์ž๋ฐ”";
h.age = 1;
h.eat;

Student s = new Student();
s.name = "๊น€์™„์ „";
s.age = 2;
s.studentID = 12;
ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ๋•Œ๋Š” extends ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํด๋ž˜์Šค๋ช… ๋‹ค์Œ์— extends ๋ถ€๋ชจ ํด๋ž˜์Šค๋ช…(extends Human)์œผ๋กœ ํ‘œ๊ธฐํ•˜๋ฉด ๋œ๋‹ค. Student ํด๋ž˜์Šค๋Š” Human ํด๋ž˜์Šค์— ์—†๋Š” ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๋˜ํ•œ 'ํ•™์ƒ์€ ํ•™์ƒ์ด๋‹ค.' ๋ง๊ณ  'ํ•™์ƒ์€ ์‚ฌ๋žŒ์ด๋‹ค.' ๋ผ๋Š” ๋ง์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ ๋‹คํ˜•์  ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๋‹คํ˜•์„ฑ์ด๋ž€, 1๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ชจ์–‘์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.  '์‚ฌ๋žŒ์€ ํ•™์ƒ์ด๋‹ค.' ๋ผ๋Š” ๋ง์„ ์‚ดํŽด๋ณด๋ฉด ์ด๋Š” ์˜ณ์ง€ ์•Š๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ƒ์†์ด ๋‹คํ˜•์„ฑ์ด๋ž€ ์žฅ์ ์„ ๊ฐ€์ง€์ง€๋งŒ '์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋‹ค.' ๋ผ๋Š” ๋ง์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์œ ์˜ํ•ด์•ผํ•œ๋‹ค.

Student ํด๋ž˜์Šค๋Š” ํ•„๋“œ 3๊ฐœ, ๋ฉ”์„œ๋“œ 3๊ฐœ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 

 

Q. ์ฝ”๋“œ์˜ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ๊นŒ?

A.
๊ทธ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์˜คํžˆ๋ ค ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ํด๋ž˜์Šค์— ๋„ฃ์–ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 ๋‹ค์ค‘ ์ƒ์†

class B {
    int data = 3;
}

class C {
    int data = 4
}

class A extends B, C {
    ...
}
A a = new A();
System.print.out(a.data);
์ž๋ฐ”๋Š” ๋‹ค์ค‘์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” ํด๋ž˜์Šค B์™€ ํด๋ž˜์Šค C์— data ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋‹ˆ A ์ž…์žฅ์—์„œ ์–ด๋А data๋ฅผ ๊ฐ€์ ธ์™€์•ผํ• ์ง€ ํ˜ผ๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰ ๋ชจํ˜ธ์„ฑ์„ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์ค‘์ƒ์†์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

์ƒ์†ํ•  ๋•Œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

class A {
    int m;
    void abc() {}
}

class B extends A {
    int n;
    void bcd() {}
}
B b = new B();
์ž์‹ ํด๋ž˜์Šค์™€ ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” JVM์— ์˜ํ•ด ๋กœ๋”ฉ๋˜๋Š”๋ฐ, ์ด๊ฒƒ์„ ํด๋ž˜์Šค ๋กœ๋”ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด์ œ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋˜๋ฉด ๋ฉ”์„œ๋“œ ์˜์—ญ์— ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๊ทธ ํ›„ ์‹ค์ œ ๊ฐ์ฒด๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋œ๋‹ค. ์ฒ˜์Œ์— ๋ถ€๋ชจ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ํ›„ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ถ”๊ฐ€ํ•œ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์— ์ถ”๊ฐ€๋œ๋‹ค. ์ฆ‰, ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋‚ด๋ถ€์— ๋ถ€๋ชจ ํด๋ž˜์Šค ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋œ๋‹ค.

์ฐธ์กฐ ๋ณ€์ˆ˜ b๋Š” B ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋๋‹ค. ๊ทธ๋ ‡๊ธฐ์— B ํƒ€์ž… ๊ฐ์ฒด๋งŒ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ์ฒด B ์•ˆ์—๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋„ ํ•จ๊ป˜ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—  ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

 

 ์ƒ์„ฑ์ž์˜ ์ƒ์† ์—ฌ๋ถ€

class A {
    A() {
    }
}

class B extends A {
}
์ƒ์„ฑ์ž๋Š” ์ž์‹ ํด๋ž˜์Šค์ธ B ํด๋ž˜์Šค์— ์ƒ์†๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ƒ์„ฑ์ž๋ฅผ ํด๋ž˜์Šค B๊ฐ€ ์ƒ์†ํ•˜๊ฒŒ๋˜๋ฉด ํด๋ž˜์Šค๋ช…๊ณผ ์ƒ์„ฑ์ž๋ช…์ด ๋‹ฌ๋ผ์ง€๋ฉด์„œ ์ƒ์„ฑ์ž๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„  ๋ฆฌํ„ด ํƒ€์ž…์„ ์ •ํ•ด์•ผํ•˜๋Š”๋ฐ, ๋ฆฌํ„ด ํƒ€์ž…๋„ ์—†์–ด์„œ ๋ฉ”์„œ๋“œ๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค. ๊ฒฐ๊ตญ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ๋ฐ›๊ฒŒ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ๋œ๋‹ค.

 

 

 

 


 

 

 

 

โœ”๏ธ   ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ…_ 319p

 

 ์บ์ŠคํŒ…

๋“ฑํ˜ธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•ญ์ƒ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์˜ ์ž๋ฃŒํ˜•์ด ์ผ์น˜ํ•ด์•ผํ•˜๋Š”๋ฐ, ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ํƒ€์ž…์„ ๋ณ€ํ™”ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 ์—…์บ์ŠคํŒ…

๋ฒ”์œ„๊ฐ€ ์ข์€ ์ชฝ์—์„œ ๋„“์€ ์ชฝ์œผ๋กœ ์บ์ŠคํŒ…๋œ๋‹ค. (์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜)

class A {}
class B extends A {}
class C extends B {}
B b1 = new B();
A a1 = b1;

C c2 = new C();
B b2 = (B) c2;
์—…์บ์ŠคํŒ…์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. ๊ทธ๋ž˜์„œ A a1 = (A) b1;์œผ๋กœ ์ ์ง€ ์•Š์•„๋„ (A)๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ์ถ”๊ฐ€ํ•œ๋‹ค. ํด๋ž˜์Šค A๋Š” ํด๋ž˜์Šค B๋ฅผ ์ƒ์†ํ•œ๋‹ค. ํด๋ž˜์Šค B๋Š” ํด๋ž˜์Šค C๋ฅผ ์ƒ์†ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด b1์€ Aํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  C๋Š” B์™€ A๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ข€ ๋” ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด A ํด๋ž˜์Šค๊ฐ€ ์‚ฌ๋žŒ, B ํด๋ž˜์Šค๊ฐ€ ํ•™์ƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด 'ํ•™์ƒ์€ ์‚ฌ๋žŒ์ด๋‹ค.'๋Š” ์–ธ์ œ๋‚˜ ๋งž๋Š” ๋ง์ด๋‹ˆ ์—…์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค.

 

 

๋‹ค์šด์บ์ŠคํŒ…

๋ฒ”์œ„๊ฐ€ ๋„“์€ ์ชฝ์—์„œ ์ข์€ ์ชฝ์œผ๋กœ ์บ์ŠคํŒ…๋œ๋‹ค. (๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ž์‹ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜)

class A {}
class B extends A {}
class C extends B {}
A a1 = new A();
B b1 = (B) a1;

A a2 = new B();
B b2 = (B) a2;
C c2 = (C) a2;
Aํƒ€์ž…์ธ ์ƒ์„ฑ์ž a1์€ Bํƒ€์ž…์œผ๋กœ ๋‹ค์šด ์บ์ŠคํŒ… ๋  ์ˆ˜ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํด๋ž˜์Šค A๋Š” ํด๋ž˜์Šค B๋‚˜ C๋ฅผ ์ƒ์†ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ B b1= (B) a1;์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ƒ์„ฑ์ž a2๋ฅผ ์‚ดํŽด๋ณด์ž. ์—ฌ๊ธฐ์„œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์ด ๋™์ผํ•˜์ง€ ์•Š๋‹ค. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ A๊ฐ€ ๋˜๊ณ  ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์€ B๊ฐ€ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‚ดํŽด๋ณด๋ฉด B๋Š” A ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋ฏ€๋กœ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ด๋ฏธ Bํƒ€์ž… ์•ˆ์— Aํƒ€์ž…์ด ์žˆ๋Š” ํ˜•ํƒœ์ผ ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์€ B๊ฐ€ ๋˜๋ฉด์„œ, a2๋Š” B ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ a2๋Š” Bํƒ€์ž…์œผ๋กœ ๋‹ค์šด ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋Ÿฌ๋ฉด c2๋ฅผ ์‚ดํŽด๋ณด์ž. ํด๋ž˜์Šค B๋Š” ํด๋ž˜์Šค C๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํž™ ๋ฉ”๋ชจ๋ฆฌ์— Cํƒ€์ž… ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋งŒ๋“ค์–ด์ง„ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—) ๊ทธ๋ ‡๊ธฐ์— ClassCastException์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ๋‹ค์šด์บ์ŠคํŒ…์€ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๋ณด๋‹ค ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์— ์ค‘์ ์„ ๋‘”๋‹ค. ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์ด ์–ด๋А ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค์šด์บ์ŠคํŒ…์˜ ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

 

 

Q. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์˜ ์ฐจ์ด์ ์€?

A.
์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์ปดํŒŒ์ผ ์‹œ์ ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์— ๋”ฐ๋ผ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ์™€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ•„๋“œ์— ์ œํ•œ์ด ์ƒ๊ธฐ๋Š”๋ฐ, ์ •์  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•  ๊ฒฝ์šฐ ์ž์‹ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. (๋‹คํ˜•์„ฑ)
new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์— ๋”ฐ๋ผ ๋™์ž‘์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”๋ฐ ๋™์  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. (์บ์ŠคํŒ…)

 

 

 


 

 

 

โœ”๏ธ   ํƒ€์ž…์— ๋”ฐ๋ฅธ ์ฐจ์ด์ _323p (๋‚ด์šฉ ๋‹ค๋ฆ„)

์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…

๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ์˜ํ–ฅ์„ ์ฃผ๋ฉฐ, ๋™์ ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

Cat ํƒ€์ž…, Cat ์ƒ์„ฑ์ž

interface Animal {
    void sound();
}

class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("Meow");
    }

    public void scratch() {
        System.out.println("Cat is scratching");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat a2 = new Cat();
        a2.sound();   
        a2.scratch(); 
    }
}
์ƒ์„ฑ์ž a2๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์ด Cat์œผ๋กœ ๋™์ผํ•˜๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ a2๋Š” Cat์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— sound ๊ฐ’์€ "Meow"๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. scratch๋Š” ์ž˜ ์‹คํ–‰๋˜์–ด "Cat is scratching"์œผ๋กœ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

 

 

Animal ํƒ€์ž…, Cat ์ƒ์„ฑ์ž

interface Animal {
    void sound(); 
}

class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("Meow");
    }

    public void scratch() {
        System.out.println("Cat is scratching");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a2 = new Cat();
        a2.sound();

        a2.scratch();
    }
}
์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์ธ Animal์„ ์ƒ์†ํ•˜๋Š” Cat ํด๋ž˜์Šค๋Š” sound( ) ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์กŒ์ง€๋งŒ, Animal ์ธํ„ฐํŽ˜์ด์Šค๋„ ๋˜‘๊ฐ™์ด sound( ) ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.

์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ Animal์ด๊ณ  ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์€ Cat์ธ ์ƒ์„ฑ์ž a2๋Š” sound( )๋ฉ”์„œ๋“œ์™€ scratch( )๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ด๋•Œ sound ๋ฉ”์„œ๋“œ๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๋˜์–ด Cat์˜ sound ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด (๋™์ ๋ฐ”์ธ๋”ฉ) "Meow"๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Animal ํด๋ž˜์Šค์—๋Š” scratch ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ์— Animal ํƒ€์ž…์ธ a2๋Š” scratch ๋ฉ”์„œ๋“œ๋Š” ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†๋‹ค.

 

 

 

 ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…

์ปดํŒŒ์ผ ์‹œ์ ์— ์˜ํ–ฅ์„ ์ฃผ๋ฉฐ, ์ •์  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

interface Animal {
    void sound(); 
}

class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("Meow");
    }

    public void scratch() {
        System.out.println("Cat is scratching");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a2 = new Cat(); 
        a2.sound();

        Cat a = (Cat) a2;
        a.scratch();
    }
}
์œ„์˜ ์ฝ”๋“œ์—์„œ a2.scratch๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ์„ฑ์ž a2๋ฅผ ๋‹ค์šด์บ์ŠคํŒ… ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. a2๊ฐ€ Animal ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ Animal์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋งŒ ์‹คํ–‰๊ฐ€๋Šฅํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด a2๋ฅผ Cat ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์šด์บ์ŠคํŒ…์„ ํ•ด์คฌ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด scratch ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 


 

 

โœ”๏ธ   instanceof_ 326p

instanceof

์บ์ŠคํŒ… ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

C c = new C();

System.out.println(c instanceof A);
[ ์ฐธ์กฐ ๋ณ€์ˆ˜ instanceof ํƒ€์ž… ] ํ˜•์‹์œผ๋กœ ์“ฐ์ด๋ฉฐ, ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜๋ฉด true๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด false๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. instanceof ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ์† ๊ด€๊ณ„๋‚˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“  ์ƒ์„ฑ์ž๋ฅผ ์ง์ ‘ ํ™•์ธํ•˜์ง€ ์•Š๊ณ ๋„ ์บ์ŠคํŒ… ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.



 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 


 

 

โœ”๏ธ   ๋ฉค๋ฒ„ ๋ฐ ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ง€์ •์ž_ 280p

 

4์ข…๋ฅ˜์˜ ์ ‘๊ทผ์ง€์ •์ž

public, protected, default(ํ˜น์€ package), private

 

 

 ์ ‘๊ทผ ๋ฒ”์œ„

public > protected > default > private

์ ‘๊ทผ์ง€์ •์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฒ”์œ„
public ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค O, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋งŒ O
protected ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค O, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ์ž์‹ ํด๋ž˜์Šค๋งŒ O - ์ƒ์†์„ ํ†ตํ•ด
default ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค๋งŒ O (๋‹ค๋ฅธ ํŒจํ‚ค์ง€ X)
private ๊ฐ™์€ ํด๋ž˜์Šค๋งŒ O (๋‹ค๋ฅธ ํŒจํ‚ค์ง€ X, ๋‹ค๋ฅธ ํด๋ž˜์Šค X)

 

 

 ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋ฐ›์€ ๊ฒฝ์šฐ

public class A {
    
    public int a = 1;
    protected int b = 2;
    int c = 3;
    private int d = 4;
    
    public void print() {
        System.out.println(a + " ");
        System.out.println(b + " ");
        System.out.println(c + " ");
        System.out.println(d + " ");     
    }
}
public class B extends A{

    public void print() {
        System.out.println(a + " ");
        System.out.println(b + " ");
    }
}
ํด๋ž˜์Šค B๋Š” ํด๋ž˜์Šค A๋ฅผ ์ƒ์†ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ pubic์ด ๋ถ™์€ ๋ณ€์ˆ˜ a์™€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ protected๊ฐ€ ๋ถ™์€ ๋ณ€์ˆ˜ b๋ฅผ ํด๋ž˜์Šค B์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์›๋ž˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ์†์€ ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ๋ฐ”๋กœ ํด๋ž˜์Šค A์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

public class A {
    
    public int a = 1;
    protected int b = 2;
    int c = 3;
    private int d = 4;
    
    public void print() {
        System.out.println(a + " ");
        System.out.println(b + " ");
        System.out.println(c + " ");
        System.out.println(d + " ");     
    }
}
public class B {

    A a = new A(); // ๊ฐ์ฒด ์ƒ์„ฑ!!!
     
    public void print() {
        // public์ธ ๋ณ€์ˆ˜ a๋งŒ ๊ฐ€๋Šฅ
        System.out.println(a + " ");
    }
}

 

 

 

 


 

 

 

โœ”๏ธ   ํด๋ž˜์Šค ์ ‘๊ทผ ์ง€์ •์ž์™€ ์ƒ์„ฑ์ž ์ ‘๊ทผ ์ง€์ •์ž_ 285p

 

default ํด๋ž˜์Šค๋ฅผ import ํ•˜๋Š” ๊ฒฝ์šฐ

import abc.bcd.A;

class A {
 ...
}
import abc.bcd.A;

class B {
 ...
}
ํด๋ž˜์Šค ์•ž์—๋Š” private์™€ default๋งŒ ๋ถ™์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ default๋Š” ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— importํ•˜๋Š”๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์œ„์˜ ์ฝ”๋“œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ public ํด๋ž˜์Šค์— ์ƒ์„ฑ์ž๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด, ๊ทธ ์ƒ์„ฑ์ž ์•ž์— ์ ‘๊ทผ์ง€์ •์ž๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ public์ด ๋ถ™์„ ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๋“ฏ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ง€์ •์ž๋Š” ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ง€์ •์ž์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋ฉฐ, ์ž๋™์ด ์•„๋‹Œ ์ง์ ‘ ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๋”ฐ๋ผ ๋ถ™์ผ ํ•„์š”๋Š” ์—†๋‹ค.

ํด๋ž˜์Šค์—๋Š” public๊ณผ default๋งŒ ์•ž์— ๋ถ™์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒ์„ฑ์ž์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์ ‘๊ทผ ์ง€์ •์ž๋„ public ํ˜น์€ default๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ default๋ผ๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—๋Š” ์‚ฌ์šฉ๋ถˆ๊ฐ€ํ•œ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•˜๋ฉด ๋œ๋‹ค.

 

 

Q. ํด๋ž˜์Šค ์•ž์— private์™€ default๋งŒ ๋ถ™์„ ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š”?

A. 
private๋ฅผ ํด๋ž˜์Šค์— ๋ถ™๋Š”๋‹ค๋ฉด ์ ‘๊ทผ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ๋˜์–ด ํด๋ž˜์Šค์˜ ์˜๋ฏธ ์ž์ฒด๊ฐ€ ์—†์–ด์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด protected๋Š” ์•ˆ๋˜๋ฉด์„œ default๋Š” ๋˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ถ”์ธกํ•ด๋ด์•ผํ•œ๋‹ค. protected๋Š” ์ƒ์†์ด ๋œ๋‹ค. ์ด ์ ์ด default์™€ ์ฐจ์ด์ ์ธ๋ฐ, ์•„๋งˆ ์ƒ์†์ด ๋ถ™์–ด์„œ protected๋Š” ํด๋ž˜์Šค์— ๋ถ™์ด์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค. (์˜ˆ์™ธ๊ฐ€ ์ƒ๊ธฐ๋Š” ๋А๋‚Œ?)_ ๋ช…ํ™•ํ•œ ๋‹ต์„ ๋ชป์ฐพ์Œ

 

 

 

 

public ํด๋ž˜์Šค์— default ์ƒ์„ฑ์ž์˜ ๊ฒฝ์šฐ

Package abc.bcd;

public class A {
    A() {
    }
}
package bcd.cde;

import abc.bcd.A;

class C {
    public static void main(String[] ar) {
        A a = new A();
    }
}
public ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค A์—๋Š” default ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๊ฐ€์ง„ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋‹ค. ํด๋ž˜์Šค A๋Š” public์ด๋‹ˆ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— import๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒ์„ฑ์ž A๋Š” default๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ํ˜ธ์ถœ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค. ๋งŒ์•ฝ ํด๋ž˜์Šค C๊ฐ€ ํด๋ž˜์Šค A๋ฅผ ์ƒ์†ํ•œ๋‹คํ•ด๋„ ์ƒ์„ฑ์ž A๋Š” default ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ์ •์  ํ•„๋“œ_ 292p

 

 ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„

๊ฐ์ฒด ์•ˆ์— ์žˆ์„ ๋Œ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋Š” ๋ฉค๋ฒ„

 

 ์ •์  ๋ฉค๋ฒ„

static์ด ๋ถ™์–ด ์žˆ๋Š” ๋ฉค๋ฒ„

class A {
    int m = 3;
    static int n = 5;
}
// ์ธ์Šคํ„ด์Šค ํ•„๋“œ์˜ ํ™œ์šฉ ๋ฐฉ๋ฒ•
A a = new A();
System.out.println(a.m);
// static ํ•„๋“œ ํ™œ์šฉ ๋ฐฉ๋ฒ•
System.out.println(A.n);
์ธ์Šคํ„ด์Šค ํ•„๋“œ m์€ ๊ฐ์ฒด ๋‚ด๋ถ€์— ์ƒ์„ฑ๋œ๋‹ค. ๊ทธ๋ž˜์„œ m์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ์ €์žฅ ๊ณต๊ฐ„์ด ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•˜๋ฏ€๋กœ ์ €์žฅ ๊ณต๊ฐ„์— ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

์ •์  ํ•„๋“œ n์€ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ €์žฅ ๊ณต๊ฐ„์„ ์ง€๋‹ˆ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ํด๋ž˜์Šค๋ช…. ๋ฉค๋ฒ„๋ช…์ธ A.n์œผ๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ธ์Šคํ„ด์Šค์ฒ˜๋Ÿผ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช….๋ฉค๋ฒ„๋ช…์ธ a.m๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ •์  ๋ฉค๋ฒ„๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

 

 

A a1 = new A();
A a2 = new A();

a1.n = 7;
a2.n = 8;
์ •์  ํ•„๋“œ n์— ๊ฐ’ 7๊ณผ 8์„ ์ฐจ๋ก€๋กœ ๋„ฃ์—ˆ๋‹ค. ์•„๋งˆ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ m์— ๋„ฃ์—ˆ๋‹ค๋ฉด a1.m์€ 7์ด ๋˜๊ณ  a2.m์€ 8์ด ๋  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ •์  ๋ณ€์ˆ˜๋Š” a1.n๊ณผ a2.n ๋ชจ๋‘ 8์ด ๋‚˜์™”๋‹ค.

๊ฐ์ฒด ์ƒ์„ฑ์€ ํž™ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ด๋ค„์ง€๊ณ  ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์— ์ƒ์„ฑ๋˜๋ฏ€๋กœ ๊ฐ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋‘ ๊ฐ์ฒด ์•ˆ์— ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ฐ’์„ ์ฝ์œผ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ๋”ฐ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋˜์–ด์žˆ๋Š” a1๊ณผ a2 ๋‚ด๋ถ€์˜ ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค.

์ •์  ํ•„๋“œ๋Š” ํด๋ž˜์Šค A์•ˆ์— ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฐ์ฒด ์•ˆ์—๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฒฐ๊ตญ ๋‘ ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค A๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋‹ˆ ๊ฐ’ 7์ด ๋“ค์–ด๊ฐ€๋ฉด a1์„ ํ†ตํ•ด ํด๋ž˜์Šค A ์•ˆ์— 7์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ํ›„ a2๋ฅผ ํ†ตํ•ด ๊ฐ’ 8์„ ๋„ฃ์œผ๋ฉด ์ด ๋˜ํ•œ ํด๋ž˜์Šค A๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋‹ˆ 7์˜ ๊ฐ’์€ ์‚ฌ๋ผ์ง€๊ณ  8์ด ์ €์žฅ๋˜๊ฒŒ ๋œ๋‹ค.

 

 

 


 

 

 

โœ”๏ธ   ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์™€ ์ •์  ๋ฉ”์„œ๋“œ_ 298p

 

class A {
    void abc() {
        System.out.pritnln("์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ");
    }
    
    static void avc() {
        System.out.println("์ •์  ๋ฉ”์„œ๋“œ");
    }
}
A a1 = new A();
a1. abc();

A.bcd();
์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ๊ฐ™๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค. ์ •์  ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค๋ช…์œผ๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •์  ๋ฉ”์„œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋‚˜ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์ด ํ•„์ˆ˜์ธ๋ฐ, ์ •์  ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ์‹คํ–‰ํ•˜๊ธฐ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ ์ •์  ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—๋Š” this ํ‚ค์›Œ๋“œ๋Š” ์˜ฌ ์ˆ˜ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด this ์ž์ฒด๊ฐ€ ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. this๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ๋ฉ”์„œ๋“œ์— ์˜ฌ ์ˆ˜ ์—†๋‹ค.

 

 

 

 

 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 




โœ”๏ธ   ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ_ 253p

 

 ํ•„๋“œ 

:  ํด๋ž˜์Šค์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

 

 ์ง€์—ญ๋ณ€์ˆ˜

:  ๋ฉ”์„œ๋“œ์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

Class A {
    int m;
    int n;
    
    void init(int a, int b) {
        int c;
        c = 3;
        
        m = a;
        n = b;
    }
}
ํ•ด๋‹น ์ฝ”๋“œ๋Š” ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ์ด๋‹ค. ํ•„๋“œ๋Š” ํด๋ž˜์Šค๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ๋งจ ์œ„์— ์ •์˜๋œ ๋ณ€์ˆ˜์ธ๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” m๊ณผ n์„ ๋งํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” a์™€ b๊ฐ€ ๋œ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋‹ค. a๋Š” m์— ์˜ฎ๊ธฐ๊ณ , b๋Š” n์— ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ๋ฉ”์„œ๋“œ init์ด ํ•ด์•ผํ•  ์ผ์ด๋‹ค. ์ด๋•Œ๋Š” ํ•„๋“œ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— m๊ณผ n ์•ž์— this.๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•ด์ค€๋‹ค.

 

 

 

 


 

 

โœ”๏ธ   ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ_ 255p

 

Class A {
    int m;
    int n;
    
    void init(int m, int n) {
        m = m;
        n = n;
    }
}

public class pratice {
    public static void main(String[] args) {
        
        A a = new A();
        
        a.init(3,4);
        
        System.out.println(a.m);
        System.out,println(a.n);
     }
}
ํ•ด๋‹น ์ฝ”๋“œ๋Š” ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ๋‹ค. ์ธ์ž 3๊ณผ 4๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ๋ฐ›์•„์™”๋‹ค. ๊ฐ ๊ฐ’์€ init ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ m๊ณผ n์— ๋“ค์–ด์žˆ๊ฒŒ ๋œ๋‹ค. m๊ณผ n์„ ํ•„๋“œ์— ์ €์žฅํ•˜๊ณ  ์‹ถ์—ˆ์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ•„๋“œ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๋ฐ”๋žŒ์— ํŒŒ๋ผ๋ฏธํ„ฐm์„ ํŒŒ๋ผ๋ฏธํ„ฐ m์— ์˜ฎ๊ธฐ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ n์„ ํŒŒ๋ผ๋ฏธํ„ฐ n์— ์˜ฎ๊ธฐ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ํด๋ž˜์Šค ํ•„๋“œ๊ฐ’ m๊ณผ n์„ ์˜๋ฏธํ•˜๋Š” a.m๊ณผ a.n์€ ๊ฒฐ๊ตญ ์ถœ๋ ฅํ•˜๊ฒŒ ๋˜๋”๋ผ๊ณ  ๊ฐ’์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   this๋ฅผ ์ฃผ๋กœ ์“ฐ๋Š” ๊ฒฝ์šฐ (์ฑ…์— ์—†์Œ)

์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

B b = new B();
A a = new A(b);

a.addDataToB("Hello World!");

 

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ํด๋ž˜์Šค B๋Š” b๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ , ํด๋ž˜์Šค A๋Š” a๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, ํด๋ž˜์„œ A๋Š” ํด๋ž˜์Šค B๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋˜ addDataToB ๋ฉ”์„œ๋“œ๊ฐ€ ํด๋ž˜์Šค B์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด a๋Š” ๊ฐ์ฒด b๋ฅผ ์ธ์ž๋กœ ์ƒ์„ฑ์ž A์—๊ฒŒ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๊ทธ๋ ‡๊ฒŒ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

Q. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ธ์ž b๋กœ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค๋ฉด?

A. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ฐ์ฒด a๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „, ์ด๋ฏธ ๊ฐ์ฒด ์ƒ์„ฑ์—์„œ ํด๋ž˜์Šค B๋ฅผ b๋ผ๊ณ  ์ง€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•„๋“œ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ํ•„๋“œ๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค B๋„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•˜๊ณ , ํƒ€์ž… B๋ฅผ ๊ฐ€์ ธ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ž b๋ฅผ ๋ณด๋‚ด์•ผํ•œ๋‹ค.

 

 

// ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ
public class B {

    // ํ•„๋“œ data
    private String data;

    // ๋ฐ์ดํ„ฐ ์ €์žฅํ•œ๋‹ค.
    public void saveData(String data) {
        
        // ์ธ์ž๋กœ ๋ฐ›์€ data๋ฅผ ํ•„๋“œ๋กœ ์˜ฎ๊ธด๋‹ค.
        this.data = data;
    }

    // ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.
    public String getData() {
        // ํ•„๋“œ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.
        return this.data;
    }
}

// ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ณ  ๊ฐ’์„ ์ถœ๋ ฅ
public class A {

    // ํด๋ž˜์Šค B๋ฅผ ํ•„๋“œ๋กœ ์ •์˜.
    private final B b;
    
    // ์ƒ์„ฑ์ž A๋กœ ์ €์žฅ์†Œ b์˜ ํ•„๋“œ ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค.
    // ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์„ A ํด๋ž˜์Šค ํ•„๋“œ b์— ์ €์žฅ
    public A(B b) {
        this.b = b;
    }
    
	// ํด๋ž˜์Šค B์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋ฉ”์„œ๋“œ.
    public void addDataToB(String data) {
        b.saveData(data);
    }

    // B์˜ ๋ฉ”์„œ๋“œ์— ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฉ”์„œ๋“œ.
    public void printDataFromB() {
        System.out.println("A: ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ -> " + b.getData());
    }
}

 

์ƒ์„ฑ์ž A์—๊ฒŒ ์ธ์ž๊ฐ€ ์ž˜ ๋„์ฐฉํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์ƒ์„ฑ์ž๋Š” ํ•„๋“œ๋กœ ๋ณด๋‚ด ํด๋ž˜์Šค B์—๊ฒŒ B์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž„์„ ์•Œ๋ ค์•ผํ•œ๋‹ค. ์ฆ‰, ํƒ€์ž… B๋ฅผ ๊ฐ€์ง„ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— b๊ฐ€ ๋“ค์–ด์˜ค๊ณ  this.b์—๊ฒŒ ๊ฐ’์„ ๋„˜๊ธธ ๊ฒƒ์ด๋‹ค. this.b๋Š” ํ•„๋“œ์˜ b๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ธ์ž๋กœ ๋ฐ›์€ b๋ผ๋Š” ๊ฐ’ (ํด๋ž˜์Šค B๋ฅผ ํ’ˆ๊ณ  ์žˆ๋Š”)์€ ํ•„๋“œ๋กœ ๋ณด๋‚ด์ง€๊ฒŒ ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ง๊ด€์ ์ธ ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ํ•„๋“œ๋กœ ๊ฐ’์ด ๊ฐ”๋‹ค๋Š” ์˜๋ฏธ๋ฅผ, ํƒ€์ž… B๋ฅผ ๊ฐ€์ง„ b๊ฐ€ ์ž์‹ ๊ณผ ๋˜‘๊ฐ™์€ ํƒ€์ž…์ธ ํ•„๋“œ๋ฅผ ๋งŒ๋‚˜ ์ผํ•˜๋ผ๊ณ  ํ•œ๋Œ€ ์ณค๋‹ค๋Š” ์‹์œผ๋กœ ๋ฐ›์•„๋“œ๋ฆฌ๊ธฐ๋กœ ํ–ˆ๋‹ค. ์•„๋ฌดํŠผ ๊ทธ๋ ‡๊ฒŒ ํ•„๋“œ์˜ ๊ฐ’์€ b๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ํด๋ž˜์Šค B๊ฐ€ ๊ฐ€์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ๋งˆ์Œ๊ป ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

B b = new B();
A a = new A(b);

a.addDataToB("Hello World!");
๋‹ค์‹œ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„์˜ค๊ฒ ๋‹ค. a.addDataToB๋Š” ๊ฐ์ฒด a(ํด๋ž˜์Šค A)๋ฅผ ํ†ตํ•ด addDataToB๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์— "Hello World!"๋ผ๋Š” ์žฌ๋ฃŒ๋ฅผ ๋„ฃ๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” A a = new A(b);๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค A์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค ์ค€๋น„์‹œ์ผœ๋†จ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋ฌธ์ œ์—†์ด a.addDataToB๋Š” ๋Œ์•„๊ฐˆ ๊ฒƒ์ด๋‹ค.

a.addDataToB๋Š” String ํƒ€์ž…์ด ์˜ค๋ฉด ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค. "Hello World!"๋Š” String ํƒ€์ž…์ด๋‹ˆ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ์ œ๋Œ€๋กœ ๋œ ์žฌ๋ฃŒ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  addDataToB๋Š” "Hello World!"๋ฅผ data๋ผ๋Š” ๊ฒƒ์œผ๋กœ ํฌ์žฅํ•˜์—ฌ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

b. saveData(data)๋Š” data ๊ฐ’(Hello World!)์„ ํด๋ž˜์Šค B์— ์žˆ๋Š” saveData๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ฉ”์„œ๋“œ๋กœ ๋ณด๋‚ผ ๊ฒƒ์ด๋‹ค.

 

// ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ
public class B {

    // ํ•„๋“œ data
    private String data;

    // ๋ฐ์ดํ„ฐ ์ €์žฅํ•œ๋‹ค.
    public void saveData(String data) {
        
        // ์ธ์ž๋กœ ๋ฐ›์€ data๋ฅผ ํ•„๋“œ๋กœ ์˜ฎ๊ธด๋‹ค.
        this.data = data;
    }

    // ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.
    public String getData() {
        // ํ•„๋“œ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.
        return this.data;
    }
}
saveData๋Š” data๋ผ๋Š” ํฌ์žฅ์œผ๋กœ ๊ฐ์‹ธ์ง„ Hello World๋ฅผ ๋ฐ›์•˜๋‹ค. ์ด data๋Š” ํ•„๋“œ data์— ๋ณด๋‚ด์ง€๊ฒŒ ๋˜๊ณ  ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๊ฐ€ data์— ์žˆ๋Š” ๊ฐ’์ด ํ•„์š”ํ•ด์ง€๋ฉด ๊ฐ€์ ธ๋‹ค ์“ธ ๊ฒƒ์ด๋‹ค. (getData์ฒ˜๋Ÿผ)

 

 

 

public class Car {
    String color;  // ์ž๋™์ฐจ์˜ ์ƒ‰๊น”
    int speed;     // ์ž๋™์ฐจ์˜ ์†๋„

    // ์ƒ์„ฑ์ž ์ •์˜
    public Car(String color, int speed) {
        this.color = color; // ํ•„๋“œ ์ดˆ๊ธฐํ™”
        this.speed = speed; // ํ•„๋“œ ์ดˆ๊ธฐํ™”
    }
}

public class Main {
    public static void main(String[] args) {
        // ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •
        Car myCar = new Car("red", 100);

        System.out.println("์ƒ‰๊น”: " + myCar.color + ", ์†๋„: " + myCar.speed);
    }
}
์œ„์˜ ์ฝ”๋“œ๋Š” ํด๋ž˜์Šค๋ฅผ ํ•„๋“œ๋กœ ๋ฐ›๋Š” ๊ฒฝ์šฐ์˜€๋‹ค. ์ด๋ฒˆ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•œ ์ฝ”๋“œ๋กœ ์–ด๋–ค ๊ฐ’์„ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ  ๊ทธ ์•ˆ์— ๋‘ ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค. ํ•˜๋‚˜๋Š” String ํƒ€์ž…์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” int ํƒ€์ž…์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Car ํด๋ž˜์Šค๋กœ ๊ฐ€์„œ, ๋‘ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ฐพ๋Š”๋‹ค. ๋งž๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ฐพ์•„ ๊ฐ ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›๊ณ , ๋ฐ›์€ ์ธ์ž๋Š” ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค. 

๋‹ค์‹œ Mainํด๋ž˜์Šค๋กœ ๊ฐ€๊ฒ ๋‹ค. myCar.color์™€ myCar.speed๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•œ๋‹ค. myCar๋Š” Car ํด๋ž˜์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•œ ๊ฐ์ฒด ์ด๋ฆ„์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Car ํด๋ž˜์Šค์— ์žˆ๋Š” color๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•„๋“œ ๊ฐ’๊ณผ speed๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•„๋“œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์œ„์—์„œ red์™€ 100์ด๋ผ๋Š” ๊ฐ’์„ ๋ณด๋‚ธ ์ „์ ์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ํ•„๋“œ์— ์ดˆ๊ธฐํ™”์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— red์™€ 100์ด๋ผ๋Š” ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   this( ) (259p)

Class A {
    int m1, m2, m3. m4;
    
    A() {
        m1 = 1;
        m2 = 2;
        m3 = 3;
        m4 = 4;
    }
    
    A(int a) {
        this();
        m1 = a;
    }
   
   A(int a, int b){
       this(a);
       m2 = b;
   }
}
this( )๋ฅผ ์“ฐ๋ฉด ๋ฐ”๋กœ ์œ„์— ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋“ค๊ณ  ์˜จ๋‹ค. A(int a)๋Š” ์ƒ์„ฑ์ž A๊ฐ€ int ํƒ€์ž…์ธ ์ธ์ž ํ•˜๋‚˜๋ฅผ ๋ฐ›๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

A(int a)๋Š” this( );๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‹ˆ๊นŒ, ๋ฐ”๋กœ ์œ„์— ์žˆ๋Š” A( )์— ์žˆ๋Š” ๊ฐ’์„ ๋ฐ›์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด m1๋ถ€ํ„ฐ m4๊นŒ์ง€ ๋ฐ›๋Š”๋ฐ ๊ทธ ํ›„ m1์€ a ๊ฐ’์œผ๋กœ ์˜ฎ๊ฒจ ๋‹ด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋‹ˆ ์ตœ์ข…์ ์œผ๋กœ m1์˜ ๊ฐ’๋งŒ ๋‹ค๋ฅด๊ณ  m2์—์„œ m4๊นŒ์ง€ A( )์™€ ๊ฐ’์ด ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

A๋Š” int ํƒ€์ž…์ธ a์™€ b์ธ ๋‘๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ–ˆ๋‹ค. this(a)๋Š” ๋ฐ”๋กœ ์œ„์— ์žˆ๋Š” ์ƒ์„ฑ์ž A(int a)๋ฅผ ์˜๋ฏธํ•œ๋‹ค. A(int a)์—์„œ a๋Š” m1์— ์˜ฎ๊ธธ ๊ฒƒ์„ ๋ช…์‹œํ–ˆ์œผ๋‹ˆ m1์€ ๋ฐ›์•„์˜จ a ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  m2๋Š” b์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๋€” ๊ฒƒ์ด๋‹ค.

 

 

 

 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 


 

 

โœ”๏ธ   ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜_ 222p

 

 ํ•„๋“œ 

:  ํด๋ž˜์Šค์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

 

 ์ง€์—ญ๋ณ€์ˆ˜

:  ๋ฉ”์„œ๋“œ์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

Class A {
	
    m๊ณผ n์€ ํ•„๋“œ
    int m = 1;
    int n = 2;
    
    void B() {
    	k๋Š” ์ง€์—ญ๋ณ€์ˆ˜
    	int k = 3;
        System.out.println(k);
    }
}

 

ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜์˜ ํฐ ์ฐจ์ด์ ์€ ์ƒ์„ฑ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ํด๋ž˜์Šค ์˜์—ญ - ์Šคํƒ ์˜์—ญ - ํž™ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ ์ ธ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ํ•„๋“œ๋Š” ํž™ ์˜์—ญ์— ์ƒ์„ฑ๋˜๊ณ  ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์Šคํƒ ์˜์—ญ์— ์ƒ์„ฑ๋œ๋‹ค.

ํ•„๋“œ์˜ ๊ฒฝ์šฐ ํž™ ์˜์—ญ์— ์ƒ์„ฑ๋˜์–ด ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š์•„ ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ํ•œ ์ ˆ๋Œ€๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์Šคํƒ ์˜์—ญ์— ์ €์žฅ๋œ ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ์ค‘๊ด„ํ˜ธ๊ฐ€ ๋‹ซํ˜€ ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ž๋™์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค. ๊ณ ๋กœ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ†ต์งธ๋กœ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ํž™ ์˜์—ญ์—๋Š” ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฉ”์„œ๋“œ ๋ฒˆ์ง€๋งŒ ์กด์žฌํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ํด๋ž˜์Šค ์˜์—ญ์— ์žˆ๋‹ค.

 

 

 

• ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜์˜ ์ดˆ๊นƒ๊ฐ’

Class A {
    int m;
    int n;
    
    void B() {
    int k;
    System.out.println(k);
    }
    
    A a = new A();
    System.out.println(a.m);
    System.out.println(a.n);
    a.B();
}
m๊ณผ n์€ ํ•„๋“œ์— ์žˆ๋‹ค. ํ•„๋“œ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์„ฑ์ƒ ๊ฐ•์ œ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด 0์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์•„๋‹ˆ๋‹ค. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ €์žฅ๊ณต๊ฐ„์ด ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— System.out.println(k)์™€ a.B๋Š” ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ๋ฆฌํ„ดํƒ€์ž…์˜ ๋ฉ”์„œ๋“œ_ 229p

 

• ๋ฉ”์„œ๋“œ

: ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ

๋ฆฌํ„ด ํƒ€์ž…์ด ์—†๋Š” ๊ฒฝ์šฐ
void print() {
    System.out.println("์•ˆ๋…•");
}

๋ฆฌํ„ด ํƒ€์ž…์ด int, ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
int sum(int a, int b) {
	return a + b
}
๋ฆฌํ„ด ํƒ€์ž…์ด ์—†๋Š” ๊ฒฝ์šฐ void๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œํ•˜๋ฉด ๋œ๋‹ค. sum ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ a์™€ b๋ฅผ ๋ฐ›๋Š”๋‹ค. a์™€ b ๊ฐ’์€ ๋”ํ•ด์ง€๋ฉฐ ๊ทธ ๊ฐ’์„ intํ˜•์œผ๋กœ return ํ•˜๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ a์™€ b๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋ช…์ด ๋œ๋‹ค.

 

 

Q. void๋กœ ๋ฆฌํ„ด ํƒ€์ž…์ด ์—†๋Š” ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ return์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‚˜?

 A. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ์ฃผ๋กœ ์–ด๋–ค ๊ฐ’์„ ๋Œ๋ ค์ฃผ๊ธฐ๋ณด๋‹ค, ์กฐ๊ฑด์— ๋งž์œผ๋ฉด ๋ฉ”์„œ๋“œ๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ๋ผ์™€ ๊ฐ™์ด ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฃŒ์— ์ดˆ์ ์„ ๋งž์ถฐ ์‚ฌ์šฉํ•œ๋‹ค.
public void print() {
    if(a < 0) {
        System.out.println("๋ฉ”์„œ๋“œ ์ข…๋ฃŒ")
        return;
    }
    
    System.out.println("a๋Š” " + a);
}


๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ ์ฃผ๋กœ ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ๋ฅผ ์›ํ•  ๋•Œ return์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

 

• ํด๋ž˜์Šค ์™ธ๋ถ€ ํ˜ธ์ถœ

: ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

class A {
    int data() {
         return 3;
    }
}

public class B {
     public static void main(String[] args) {
    	๊ฐ์ฒด ์ƒ์„ฑ
        A a = new A();       
        System.out.println("data = " + a.data());
    }
}

 

 

 

• ํด๋ž˜์Šค ๋‚ด๋ถ€ ํ˜ธ์ถœ

ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ผ๋ฆฌ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์—†์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

public class A {
    public static void main(String[] args) {    
        print();
    }
    
    public static void print() {
       System.out.println("์•ˆ๋…•");
    }
}
๋ฉ”์„œ๋“œ์— static์ด ๋ถ™์–ด ์žˆ์œผ๋ฉด static์ด ๋ถ™์€ ํ•„๋“œ ๋˜๋Š” ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 


 

 

 

 

โœ”๏ธ   ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ์ž๋ฃŒํ˜•์˜ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฐจ์ด_ 235p

 

  ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜

Class A {

   public static int twice(int a) {
      a = a * 2;
      return a;
   }

   public static void main(String[] ar) {
      int a = 3;
      int k1 = twice(a);
   }
   
}
k1์ด a๋ฅผ ๊ฐ€์ ธ๊ฐ€ twice ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด a๋Š” 6์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ returnํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด  k1์€ 6์ด ๋œ๋‹ค. ์ด๋•Œ ๋ณ€์ˆ˜ a๋Š” 3์—์„œ 6์˜ ๊ฐ’์œผ๋กœ ๋ณ€๋™๋˜๊ฒ ์ง€๋งŒ ์ง€์—ญ๋ณ€์ˆ˜ a์ด๊ธฐ ๋•Œ๋ฌธ์— main์— ์žˆ๋Š” a๋Š” ๋ณ€๋™๋˜์ง€ ์•Š๋Š”๋‹ค. ์ง€์—ญ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ twice ๋ฉ”์„œ๋“œ๊ฐ€ a๋ฅผ ๊ฐ€์ ธ๋‹ค ์ˆ˜ํ–‰ํ•ด๋„ ๊ทธ๊ฒƒ์€ ๋ณต์‚ฌ๋œ ๊ฒƒ์ด๊ธฐ์— main ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜ a ๊ฐ’์€ ๋ณ€๋™๋˜์ง€ ์•Š๊ณ  ๋งˆ๋ฌด๋ฆฌ๋œ๋‹ค.

 

 

 

 

  ์ฐธ์กฐ ์ž๋ฃŒํ˜• ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜

public class A {
   public static void main(String[] args) {
      int[] array = new int[] {1,2,3};
      modify(array);
      }
      
   public static void modify(int[] a) {
      a[0] = 4;
      a[1] = 5;
      a[2] = 6;
   }
}
modify์— ๋„˜๊ฒจ์ง„ ๋ฐฐ์—ด, ์ฐธ์กฐ์ž๋ฃŒํ˜•์€ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด์˜ ์œ„์นซ๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๊ฐ์ฒด์˜ ์ฐธ์ขƒ๊ฐ’์ด ์ „๋‹ฌ๋˜์–ด ๋ณต์‚ฌ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด main์— ์žˆ๋Š” ๋ฐฐ์—ด๊ณผ modify์— ์ด์šฉ๋œ ๋ฐฐ์—ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค. modify ๋ฉ”์„œ๋“œ์—์„œ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด main์— ์žˆ๋Š” ๋ฐฐ์—ด๋„ ๊ฐ™์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜๋Š” ์ด์œ ๋‹ค.

 

 

 


 

 

 

โœ”๏ธ   ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ๋ฉ”์„œ๋“œ_ 239p

 

  ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜

: ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€ ์—ญํ• ๋กœ ๋ฉ”์„œ๋“œ๋ช…, ์ž๋ฃŒํ˜•์ด ๊ธฐ์ค€์ด ๋œ๋‹ค. (๋ฆฌํ„ด ํƒ€์ž…์€ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์•„๋‹ˆ๋‹ค)

 

 

  ์˜ค๋ฒ„๋กœ๋”ฉ

๊ฐ™์€ ์ด๋ฆ„์ด์ง€๋งŒ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒƒ

public static void print() {
   System.out.println("๋ฐ์ดํ„ฐ ์—†์Œ");
}

public static void print(int a) {
   System.out.println(a);
}

public static void print(double a) {
   System.out.println(a);
}

 

 

 


 

 

โœ”๏ธ   ์ƒ์„ฑ์ž ํŠน์ง•_ 247p

 

  ์ƒ์„ฑ์ž

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ์ง€๋‹Œ ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ํด๋ž˜์Šค์™€ ๊ฐ™์€ ์ด๋ฆ„์ด๋ฉฐ ๋ฆฌํ„ดํƒ€์ž…์ด ์—†๋‹ค. 

Class A {

    ํ•„๋“œ
    int m;
    
    ๋ฉ”์„œ๋“œ work
    void work() {
        ...
    }
    
    ์ƒ์„ฑ์ž A
    /* A() {
    
    } */
    
}

Class B {
    
    int m;
    
    void work() {
        ...
    }
    
    
    B(int a) {
    	this.a = a;
    }
}

public class pratice {
    public static void main(String[] args){
        
        A a = new A();
        B b = new B();
        B b = new B(1);
 
        a.work();
        b.work();
 
    }
}
๊ผญ ์ƒ์„ฑ์ž๋ฅผ ์จ์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ๋„ฃ์–ด ์ž‘๋™์‹œํ‚จ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํด๋ž˜์Šค B์ฒ˜๋Ÿผ ๋‹จ ํ•˜๋‚˜์˜ ์ƒ์„ฑ์ž๋ผ๋„ ์žˆ์œผ๋ฉด ๋ชจ๋“  ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผํ•œ๋‹ค. ํ˜„์žฌ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž B๋ฅผ ์ฝ”๋“œ์— ์ ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

  ๋‹ค์–‘ํ•œ ์ƒ์„ฑ์ž

Class A {

    A() {
        System.out.println("์ฒซ๋ฒˆ์งธ ์ƒ์„ฑ์ž");
    }
    
    A(int a) {
        System.out.println("๋‘๋ฒˆ์งธ ์ƒ์„ฑ์ž");
    }
}

public class pratice {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new A(2);
     }
}
๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž๋„ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ๋ชจ์–‘์œผ๋กœ๋งŒ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ๊ณผ intํ˜• ๊ฐ’์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

 

 

 

 

+ Recent posts