πŸ“– [Java] πŸ’» 상속 - 슈퍼(λΆ€λͺ¨)ν΄λž˜μŠ€μ™€ μ„œλΈŒ(μžμ‹)클래슀

πŸ’» Java 상속 - 슈퍼(λΆ€λͺ¨) ν΄λž˜μŠ€μ™€ μ„œλΈŒ(μžμ‹) 클래슀

μ•ˆλ…•ν•˜μ„Έμš”. πŸ‘‹

μ˜€λŠ˜μ€ μžλ°”μ˜ 상속과 그에 λ”°λ₯Έ

슈퍼(λΆ€λͺ¨) ν΄λž˜μŠ€μ™€ μ„œλΈŒ(μžμ‹) ν΄λž˜μŠ€μ— λŒ€ν•΄

ν¬μŠ€νŒ… ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

상속(Inheritance) μ΄λž€??

μžλ°”μ˜ 상속(Inheritance)μ΄λž€ κΈ°μ‘΄ 클래슀λ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€.

μ‰½κ²Œ λ§ν•˜μžλ©΄ μ‹€μƒν™œμ—μ„œ λΆ€λͺ¨μ—κ²Œ μžμ‹μ΄ λΆ€λͺ¨μ˜ μž¬μ‚°μ„ 상속 λ°›λŠ” 것 처럼

μ„œλΈŒ(μžμ‹) ν΄λž˜μŠ€κ°€ 슈퍼(λΆ€λͺ¨) 클래슀의 μžμ‚°(λΆ€λͺ¨ 클래슀의 멀버)을 λ¬Όλ €λ°›λŠ” 것을 λœ»ν•©λ‹ˆλ‹€.

상속을 μ΄μš©ν•˜λ©΄ 곡톡적인 κΈ°λŠ₯을 λ‹€μ‹œ μž‘μ„±ν•  ν•„μš” 없이 μž¬μ‚¬μš© ν•  수 있고

μ½”λ“œμ˜ 쀑볡을 μ€„μ—¬μ€λ‹ˆλ‹€. 보닀 적은 μ–‘μ˜ μ½”λ“œλ‘œ μƒˆλ‘œμš΄ 클래슀λ₯Ό μ‰½κ²Œ μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

extendsλΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

ex)
class SubClass extends SuperClass 

μŠˆνΌν΄λž˜μŠ€μ™€ μ„œλΈŒν΄λž˜μŠ€

슈퍼(λΆ€λͺ¨) ν΄λž˜μŠ€μ™€ μ„œλΈŒ(μžμ‹) ν΄λž˜μŠ€λŠ” μ΄λŸ¬ν•œ νŠΉμ§•μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.

슈퍼(λΆ€λͺ¨) 클래슀λ₯Ό 상속받아 λ§Œλ“€μ–΄μ§„ μ„œλΈŒ(μžμ‹) ν΄λž˜μŠ€λŠ”

슈퍼 클래슀의 멀버와 λ©”μ†Œλ“œλ₯Ό 자기 μžμ‹  κ²ƒμ²˜λŸΌ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. (μ½”λ“œ 쀑볡 μ€„μ—¬μ€Œ)

ν•˜μ§€λ§Œ μŠˆνΌν΄λž˜μŠ€λŠ” μ„œλΈŒν΄λž˜μŠ€μ˜ 멀버와 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

λ˜ν•œ 슈퍼 ν΄λž˜μŠ€λŠ” μ›λž˜μ˜ κ°€μ‹œμ„±μ„ μœ μ§€ν•©λ‹ˆλ‹€.

μŠˆνΌν΄λž˜μŠ€μ—μ„œ λ§Œμ•½ μ ‘κ·Όμ§€μ‹œμžκ°€ public μ΄μ—ˆλ‹€λ©΄ 상속 받은 μ„œλΈŒν΄λž˜μŠ€μ—μ„œλ„ publicμž…λ‹ˆλ‹€.

μ΄λ‘œμΈν•΄ μ ‘κ·Όμ§€μ‹œμžμ— λ”°λ₯Έ 차이가 λ°œμƒν•©λ‹ˆλ‹€.

-private λŠ” 였직 ν•΄λ‹Ή ν΄λž˜μŠ€μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ―€λ‘œ μ„œλΈŒν΄λž˜μŠ€μ—μ„œ μ‚¬μš©μ΄ λΆˆκ°€ν•©λ‹ˆλ‹€.
-protected λŠ” μŠˆνΌν΄λž˜μŠ€μ™€ μ„œλΈŒν΄λž˜μŠ€λ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ―€λ‘œ μ„œλΈŒν΄λž˜μŠ€μ—μ„œλ„ μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
-μ ‘κ·Όμ§€μ‹œμžκ°€ μ—†λŠ” 경우 νŒ¨ν‚€μ§€(package)λ©€λ²„λ‘œ 같은 νŒ¨ν‚€μ§€λ‚΄μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
-public 의 경우 λͺ¨λ“  ν΄λž˜μŠ€μ—μ„œ μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

슈퍼클래슀의 private μ ‘κ·Όμ§€μ‹œμžμ˜ 멀버듀은 μ„œλΈŒν΄λž˜μŠ€μ—μ„œ μ ‘κ·Ό/μ‚¬μš©μ΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 슈퍼클래슀의 private μ ‘κ·Όμ§€μ‹œμžμ˜ 멀버듀에 μ ‘κ·Όν•  수 μžˆλŠ” public μ ‘κ·Όμ§€μ‹œμžμ˜ λ©”μ†Œλ“œλ₯Ό λ§Œλ“€μ–΄ 이 λ©”μ†Œλ“œλ₯Ό 톡해 μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. (μΊ‘μŠν™”)

μƒμ†μ˜ μ˜ˆμ‹œ


public class Extends {

    public static void main(String[] args) {
        RacingCar racingCar = new RacingCar();
        racingCar.setCarNumber("12λ‚˜ 7777");
        racingCar.setMaxSpeed(300);

        System.out.println( "name: " +racingCar.name ); // 슈퍼클래슀의 name이 public μ ‘κ·Ό μ§€μ‹œμžμ΄λ―€λ‘œ λ°”λ‘œ μ ‘κ·Ό κ°€λŠ₯

        System.out.println( "carNumber: " +racingCar.getCarNumber() ); // 슈퍼클래슀의 carNumberκ°€ private μ ‘κ·Ό μ§€μ‚¬μžμ΄λ―€λ‘œ
                                                        //λ°”λ‘œ μ ‘κ·Ό λΆˆκ°€! public λ©”μ†Œλ“œλ₯Ό 톡해 μ ‘κ·Ό
        System.out.println( "maxSpeed: " +racingCar.getMaxSpeed() );
    }
}

class Car {
    //private μ ‘κ·Ό μ§€μ‹œμžμ΄λ―€λ‘œ 상속받은 μ„œλΈŒν΄λž˜μŠ€μ—μ„œ μ ‘κ·Ό λΆˆκ°€
    private String carNumber;
    public String name;

    public Car() {
        this.carNumber = "";
        this.name="λΆ•λΆ•μžλ™μ°¨";
        System.out.println("μžλ™μ°¨κ°€ μƒμ„±μ™„λ£Œ");
    }

    //μ•„λž˜μ˜ getter setterλ₯Ό public μ ‘κ·Ό μ§€μ‹œμžλ‘œ λ©”μ†Œλ“œλ₯Ό λ§Œλ“€μ–΄
    // private μ ‘κ·Όμ§€μ‹œμžμΈ carNumber에 λŒ€ν•΄ μ„œλΈŒν΄λž˜μŠ€μ—μ„œ public λ©”μ†Œλ“œλ₯Ό 톡해 μ ‘κ·Όν•  수 μžˆλ„λ‘ 함
    public String getCarNumber() {
        return carNumber;
    }

    public void setCarNumber(String carNumber) {
        this.carNumber = carNumber;
    }
}

class RacingCar extends Car {
    private int maxSpeed;

    public RacingCar() {
        this.maxSpeed = 0;
        System.out.println("경주용차 μƒμ„±μ™„λ£Œ");
    }

    public int getMaxSpeed() {
        return maxSpeed;
    }

    public void setMaxSpeed(int maxSpeed) {
        this.maxSpeed = maxSpeed;
    }
}


κ²°κ³Ό

result

끝

κ°„λ‹¨ν•˜κ²Œ Java의 상속과 그에 λ”°λ₯Έ
슈퍼클래슀 μ„œλΈŒν΄λž˜μŠ€μ— λŒ€ν•΄ 
μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
κ°μ‚¬ν•©λ‹ˆλ‹€. πŸ™

Reference

https://enter.tistory.com/108

Written on February 12, 2021