Java

[Java] 상속(Inheritance)의 κΈ°λ³Έ

newkr 2022. 7. 9. 03:03
728x90

πŸ“Œ μƒμ†μ˜ νŠΉμ§•

 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 상속이라고 ν•΄μ„œ λ‹€λ₯Ό 것은 μ—†λ‹€. μƒμ†μ˜ κ°€μž₯ 기본은 ν˜„μ‹€κ³Ό κ°™λ‹€.

'λ¬Όλ €μ£ΌλŠ” 것'

본인이 κ°–κ³  μžˆλŠ” 것에 λŒ€ν•œ λͺ¨λ“  것을 λ¬Όλ €μ£ΌλŠ” 것이닀. λ©”μ„œλ“œ, λ³€μˆ˜ λ“±λ“±..

 ν”νžˆ μƒμœ„ ν΄λž˜μŠ€μ™€ ν•˜μœ„ 클래슀둜 λ‚˜λ‰œλ‹€.

  • μƒμœ„ ν΄λž˜μŠ€λŠ” 상속을 ν•˜λŠ” 클래슀
  • ν•˜μœ„ ν΄λž˜μŠ€λŠ” 상속을 λ°›λŠ” 클래슀

 μ˜ˆμ‹œλŠ” μ•„λž˜μ™€ κ°™λ‹€.

class Man { // μƒμœ„ 클래슀
	public String name;
    	public Man(String name) {
        	this.name = name;
        }
    	public void tellName() {
    		System.out.println("이름 : " + name);
    	}
}

class BusinessMan extends Man { // ν•˜μœ„ 클래슀
	public String company;
    	public String position;
        public BusinessMan(String name, String company, String position) {
        	super(name);
            	this.company = company;
            	this.position = position;
        }
    	public void tellInfo() {
    		System.out.println("νšŒμ‚¬ : " + company);
        	System.out.println("직무 : " + position);
        	tellName();
    	}
}

 μœ„와 같이 λ©”μ†Œλ“œμ™€ λ³€μˆ˜λ₯Ό λͺ¨λ‘ 뢈러올 수 μžˆλ‹€. μ—¬κΈ°μ„œ super()λŠ” μƒμœ„ ν΄λž˜μŠ€μ— μžˆλŠ” μƒμ„±μžλ₯Ό ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ ν˜ΈμΆœν•˜λŠ” λ°©λ²•μœΌλ‘œ super(name); == this.name = name; 이닀. 이와 같이 ν˜ΈμΆœν•˜λŠ” μ΄μœ λŠ” ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό λ§Œλ“œλŠ” 것보닀 μƒμœ„ 클래슀의 것을 κ·ΈλŒ€λ‘œ ν˜ΈμΆœν•˜λŠ” 것이 더 μ•ˆμ „ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

πŸ€” μƒμ„±μžλ„ 상속이 κ°€λŠ₯ν•œ κ±° μ•„λ‹Œκ°€μš”?

 μœ„ μ˜ˆμ‹œλ₯Ό 보면 μƒμ„±μžλ„ 상속이 λ˜λŠ” 것과 같이 λŠλ‚„ 수 μžˆλ‹€. ν•˜μ§€λ§Œ μƒμœ„ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•΄μ„œ κ°€μ Έμ˜€λŠ” 것일 뿐 μƒμ†μ΄λΌκ³ λŠ” μ–˜κΈ°ν•  수 μ—†λ‹€. μƒμ„±μžμ˜ 상속이 κ°€λŠ₯ν•˜λ‹€κ³  ν‘œν˜„ν•˜λ €λ©΄ μ•„λž˜ μ˜ˆμ‹œκ°€ μ •μƒμ μœΌλ‘œ μ»΄νŒŒμΌλ˜μ–΄μ•Ό ν•œλ‹€.

Class AAA {
	int num;
    AAA(int n) {
    	num = n;
    }
}

Class BBB extends AAA {
	BBB() {
    	super(0); // AAA(int n)이 호좜됨
    }
    public static void Main(String[] args) {
    	BBB b1 = new BBB(); // κ°€λŠ₯ super(0)이 생성
        BBB b2 = new BBB(1); // λΆˆκ°€λŠ₯ BBB의 μƒμ„±μžκ°€ μ—†κΈ° λ•Œλ¬Έμ— 생성 λΆˆκ°€
    }
}

 μƒμ†μ΄ κ°€λŠ₯ν•˜λ‹€κ³  보렀면 b2κ°€ μ •μƒμ μœΌλ‘œ 컴파일이 λ˜μ–΄μ•Ό ν•œλ‹€. μ™œλƒν•˜λ©΄, 상속이 λœλ‹€κ³  봀을 λ•Œ,

  • AAA(int n) { num = n; } == BBB(int n) { num = n; }

μœ„μ™€ 같은 λͺ¨μŠ΅μ΄ λ‚˜μ™€μ•Ό ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

ps. μ•„! μΆ”κ°€λ‘œ μžλ°”λŠ” λ‹¨μΌμƒμ†λ§Œ μ§€μ›ν•œλ‹€. ν•œ ν΄λž˜μŠ€μ—μ„œ extends 뒀에 ν΄λž˜μŠ€κ°€ 1개 밖에 λͺ»μ˜¨λ‹€. μ°Έκ³ ν•˜μ‹œκΈΈ!
(C++은 닀쀑상속 μ§€μ›ν•˜λŠ”λ° γ…‘γ…‘) λ‹€ 방법이 μžˆμœΌλ‹ˆ μš”λŸ° μ†Œλ¦¬λŠ” ν•˜μ§€ 말도둝 ν•˜μž

728x90

'Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Java] main λ©”μ„œλ“œ  (0) 2022.08.13
[Java] Static에 κ΄€ν•œ 이야기..  (0) 2022.07.18
[Java] NHN Academy, Advanced Java!  (1) 2022.07.11
[Java] Privateκ³Ό Static이 곡쑴할 수 μžˆλ‹€!?  (0) 2022.07.09
[Java] Java 곡뢀  (0) 2022.07.06