0417 ์ž๋ฐ” 7์ผ์ฐจ ๐Ÿ• ์ƒ์†(OVERRIDING)

๋‹ค ์€ยท2024๋…„ 4์›” 17์ผ

JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
9/14

1. ๋ณต์Šต

๐Ÿ‘ฝ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ๊ธฐ ์ฝ”๋“œ ์ž‘์„ฑ

class Main {
    public static void main(String[] args) {
        ๊ณ„์‚ฐ๊ธฐ ๊ณ„์‚ฐ๊ธฐ = new ๊ณ„์‚ฐ๊ธฐ();	// ๊ณ„์‚ฐ๊ธฐ ๊ฐ์ฒด ์ƒ์„ฑ

        ๊ณ„์‚ฐ๊ธฐ.๋”ํ•œ๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(10, 20);	// ์†Œ๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ์ˆซ์ž๋“ค์€ ๋ชจ๋‘ ์ธ์ž

        ๊ณ„์‚ฐ๊ธฐ.๋”ํ•œ๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(50, 20);

        ๊ณ„์‚ฐ๊ธฐ.๋บ€๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(50, 20);

        ๊ณ„์‚ฐ๊ธฐ.๋บ€๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(5, 2);

        ๊ณ„์‚ฐ๊ธฐ.๊ณฑํ•œ๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(5, 2);
    }
}

class ๊ณ„์‚ฐ๊ธฐ {		// ๊ณ„์‚ฐ๊ธฐ ํด๋ž˜์Šค ์ƒ์„ฑ
    static int ๊ณฑํ•œ๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(int a, int b) {		// int a, int b = ๋งค๊ฐœ ๋ณ€์ˆ˜
        System.out.println("๊ฒฐ๊ณผ: " + (a * b));
        // ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด int ํ˜•์ด๊ณ , ์œ„์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„ ์•ž์— static int ์œผ๋กœ ๋งŒ๋“ค์–ด์คŒ
        return (a * b);
    }

    static int ๋บ€๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(int a, int b) {
        System.out.println("๊ฒฐ๊ณผ: " + (a - b));
        // ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด int ํ˜•์ด๊ณ , ์œ„์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„ ์•ž์— static int ์œผ๋กœ ๋งŒ๋“ค์–ด์คŒ
        return (a - b);
    }

    static int ๋”ํ•œ๊ฒฐ๊ณผ๋ฅผ_ํ™”๋ฉด์—_์ถœ๋ ฅ(int a, int b) {
        System.out.println("๊ฒฐ๊ณผ: " + (a + b));
        // ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด int ํ˜•์ด๊ณ , ์œ„์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„ ์•ž์— static int ์œผ๋กœ ๋งŒ๋“ค์–ด์คŒ
        return (a + b);
    }
}
โœ… ๊ฒฐ๊ณผ : 30
๊ฒฐ๊ณผ : 70
๊ฒฐ๊ณผ : 30
๊ฒฐ๊ณผ : 3
๊ฒฐ๊ณผ : 10

๐Ÿ‘ฝ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ’์„ ๋Œ๋ ค์ฃผ๋„๋ก ์ƒ์„ฑ

class Main {
    public static void main(String[] args) {
        int ๊ฒฐ๊ณผ;
        // ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์— ์„ ์–ธํ•œ '๊ฒฐ๊ณผ'๋Š” ๋ณ€์ˆ˜๋กœ ๋ฉ”์†Œ๋“œ ์•ˆ์— ์žˆ๋Š” '๊ฒฐ๊ณผ'์™€๋Š” ๋‹ค๋ฆ„

        ๊ฒฐ๊ณผ = ๊ณ„์‚ฐ๊ธฐ.ํ•ฉ(10, 20);		// ์ธ์ž: 10, 20
        System.out.println("๊ฒฐ๊ณผ : " + ๊ฒฐ๊ณผ);

        ๊ฒฐ๊ณผ = ๊ณ„์‚ฐ๊ธฐ.ํ•ฉ(30, 20);		// ์ธ์ž: 30, 20
        System.out.println("๊ฒฐ๊ณผ : " + ๊ฒฐ๊ณผ);

        ๊ฒฐ๊ณผ = ๊ณ„์‚ฐ๊ธฐ.ํ•ฉ(30, 70);		// ์ธ์ž: 30, 70
        System.out.println("๊ฒฐ๊ณผ : " + ๊ฒฐ๊ณผ);

        ๊ฒฐ๊ณผ = ๊ณ„์‚ฐ๊ธฐ.์ฐจ(30, 70);		// ์ธ์ž: 30, 70
        System.out.println("๊ฒฐ๊ณผ : " + ๊ฒฐ๊ณผ);

        ๊ฒฐ๊ณผ = ๊ณ„์‚ฐ๊ธฐ.๊ณฑ(3, 7);		// ์ธ์ž: 3, 7
        System.out.println("๊ฒฐ๊ณผ : " + ๊ฒฐ๊ณผ);
    }
}

class ๊ณ„์‚ฐ๊ธฐ{
	// ๊ฐ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค ์ •ํ•ด์ค€ ๋งค๊ฐœ ๋ณ€์ˆ˜ int a์™€ int b๋Š” ๋ชจ๋‘ ๋‹ค ๋‹ค๋ฅธ ๋ณ€์ˆ˜์•”
    static int ํ•ฉ(int a, int b){
        int ๊ฒฐ๊ณผ = a+b;
        // ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๊ฐ€ int์ด๋ฏ€๋กœ ๋ฉ”์†Œ๋“œ๋ช…์˜ ์•ž์— int๋ฅผ ๋ถ™์—ฌ์คŒ
        return ๊ฒฐ๊ณผ;
    }
    static int ์ฐจ(int a, int b){
        int ๊ฒฐ๊ณผ = a-b;
        // ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๊ฐ€ int์ด๋ฏ€๋กœ ๋ฉ”์†Œ๋“œ๋ช…์˜ ์•ž์— int๋ฅผ ๋ถ™์—ฌ์คŒ
        return ๊ฒฐ๊ณผ;
    }
    static int ๊ณฑ(int a, int b){
        int ๊ฒฐ๊ณผ = a*b;
        // ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ๊ฐ€ int์ด๋ฏ€๋กœ ๋ฉ”์†Œ๋“œ๋ช…์˜ ์•ž์— int๋ฅผ ๋ถ™์—ฌ์คŒ
        return ๊ฒฐ๊ณผ;
    }
}
โœ… ๊ฒฐ๊ณผ : 30
๊ฒฐ๊ณผ : 50
๊ฒฐ๊ณผ : 100
๊ฒฐ๊ณผ : -40
๊ฒฐ๊ณผ : 21

๐Ÿ‘ฝ 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ (๋‹ค์‹œ)

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);

        System.out.println("1๋ถ€ํ„ฐ ์ž…๋ ฅํ•œ ์ •์ˆ˜๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.");
        System.out.println("์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค: ");
        
        int result = oneTon.Cal(scanner.nextInt());
        System.out.println("๊ณ„์‚ฐ ๊ฒฐ๊ณผ: "+ result);
    }
}
class oneTon {
    static int Cal (int a){
        int i = 1;
        int sum = 0;
        while(i <= a) {
            sum += i;
            i++;
        }
        return sum;
    }
}

๐Ÿ‘ฝ n๋ถ€ํ„ฐ m๊นŒ์ง€์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

class Main {
    public static void main(String[] args) {
        int ๊ฒฐ๊ณผ1 = Math.nToMSum(2, 3);
        System.out.println("๊ฒฐ๊ณผ1 : " + ๊ฒฐ๊ณผ1);
        // ์ถœ๋ ฅ : ๊ฒฐ๊ณผ1 : 5

        int ๊ฒฐ๊ณผ2 = Math.nToMSum(5, 10);
        System.out.println("๊ฒฐ๊ณผ2 : " + ๊ฒฐ๊ณผ2);
        // ์ถœ๋ ฅ : ๊ฒฐ๊ณผ2 : 45
    }
}

class Math {
    static int nToMSum(int min, int max){
        int i = min;
        int sum = 0;
        while(i <= max) {
            sum += i;
            i++;
        }
        return sum;
    }
}

2. ์ƒ์†

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

๐Ÿ‘ฝ ์ƒ์† ์˜ˆ์‹œ ์ฝ”๋“œ

public class Main {
    public static void main(String[] args) {
        Comic comic = new Comic();

        comic.title = "ํฌ์ผ“๋ชฌ";
        comic.price = 2500;
        comic.info();
        // ์ƒ์† ๋ฐ›์€ Book ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ์ธ info()๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
    }
}

class Book {
    String title;
    int price;

    void info() {
        System.out.println("์ฑ…์˜ ์ œ๋ชฉ์€ \"" + title + "\"์ด๊ณ , ๊ฐ€๊ฒฉ์€ " + price + "์ž…๋‹ˆ๋‹ค.");
    }
}
class Comic extends Book{
// Comic์—๋Š” ์•„๋ฌด ์ฝ”๋“œ๋„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Œ
// Book ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์Œ
}

๐Ÿ‘ฝ ๋ฌด๊ธฐ ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ๋ฆฌ๋ชจ์ฝ˜์œผ๋กœ ์นผ ๊ฐ์ฒด๋ฅผ ์กฐ์ข…

class Main {
    public static void main(String[] args) {
        ๋ฌด๊ธฐ a๋ฌด๊ธฐ = new ์นผ();
        // ์ž๋™ ํ˜•๋ณ€ํ™˜์œผ๋กœ ์ธํ•ด ์นผ ๋ฆฌ๋ชจ์ฝ˜์ด ์•„๋‹Œ ๋ฌด๊ธฐ ๋ฆฌ๋ชจ์ฝ˜์œผ๋กœ a๋ฌด๊ธฐ์— ๋“ค์–ด๊ฐ
        a๋ฌด๊ธฐ.๊ณต๊ฒฉ();
    }
}
class ๋ฌด๊ธฐ{
    void ๊ณต๊ฒฉ(){
        System.out.println("์นผ๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.");
    }
}
class ์นผ extends ๋ฌด๊ธฐ{
	// ์นผ ํด๋ž˜์Šค๋Š” ๋ฌด๊ธฐ ํด๋ž˜์Šค์˜ ์ž์‹ ํด๋ž˜์Šค์ด๋ฏ€๋กœ ๊ณต๊ฒฉ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ณต์œ ํ•จ
}

2-1. ์˜ค๋ฒ„๋ผ์ด๋”ฉ(OVERRIDING)

๋ถ€๋ชจ ํด๋ž˜์Šค์—๊ฒŒ ์ƒ์†๋ฐ›์€ ์ž์‹ ํด๋ž˜์Šค๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ๋ฉ”์†Œ๋“œ์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(overriding)ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•  ๊ฒฝ์šฐ์—๋Š”

  1. ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„, ๋ฐ˜ํ™˜ ํƒ€์ž…, ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋™์ผํ•ด์•ผํ•จ
  2. ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ ๋ณด๋‹ค ์ ‘๊ทผ ์ œํ•œ์„ ์ค„์ผ ์ˆ˜๋Š” ์žˆ์œผ๋‚˜ ์ ‘๊ทผ ์ œํ•œ์„ ๋Š˜๋ฆด ์ˆ˜๋Š” ์—†์Œ

์œ„์™€ ๊ฐ™์€ ์ œ์•ฝ ์‚ฌํ•ญ์„ ์ง€์ผœ์•ผ ํ•œ๋‹ค.

class ๋ฌด๊ธฐ {
    void ๊ณต๊ฒฉ(){
        System.out.println("์นผ๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.");
    }
}
class ์นผ extends ๋ฌด๊ธฐ {	// ์นผ ํด๋ž˜์Šค๋Š” ๋ฌด๊ธฐ ํด๋ž˜์Šค์˜ ์ž์‹ ํด๋ž˜์Šค์ž„
    void ๊ณต๊ฒฉ(){
        System.out.println("๊ณต๊ฒฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
        // ๋ฌด๊ธฐ ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑํ•œ ๊ณต๊ฒฉ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์ธ ์นผ ํด๋ž˜์Šค์—์„œ ๋‹ค์‹œ ์žฌ์ •์˜ํ•จ
    }
}

0๊ฐœ์˜ ๋Œ“๊ธ€