Programming Language/Java

Java 6일차 곡뢀(상속, Method μž¬μ •μ˜)

chaerlo127 2022. 2. 21. 17:51
728x90

1. 클래슀 상속

: μžμ‹μ΄ λΆ€λͺ¨λ₯Ό μ„ νƒν•œλ‹€. μ„ νƒλœ λΆ€λͺ¨λŠ” extends 뒀에 κΈ°μˆ λœλ‹€.

 λΆ€λͺ¨ 객체가 λ¨Όμ € 생성이 되면, 후에 μžμ‹μ˜ 객체가 생성이 λœλ‹€.

public class Child extends Parent{...}

 

1. μ—¬λŸ¬κ°œμ˜ λΆ€λͺ¨ 클래슀λ₯Ό 상속 ν•  수 μ—†λ‹€

2. private 접근을 κ°–λŠ” ν•„λ“œμ™€ λ©”μ†Œλ“œλŠ” 상속 λŒ€μƒμ—μ„œ μ œμ™Έ, default μ—μ„œλŠ” 같은 package λ‚΄μ—μ„œλ§Œ 상속 κ°€λŠ₯

 

public class parent{
	public String a;
    public String b;
    }
    
    

public class child extends parent{
	public String c;
    
	public child(String a, String b, String c){
    	this.a = a; // parent field a
        this.b = b; // parent field b
        this.c = c; // child field c
        }

 

 

2. λΆ€λͺ¨ μƒμ„±μž, method 호좜

λΆ€λͺ¨μ˜ κΈ°λ³Έ μƒμ„±μžκ°€ μ‘΄μž¬ν•΄μ•Όμ§€ 호좜이 κ°€λŠ₯ν•˜λ‹€.

super(); // λΆ€λͺ¨μ˜ κΈ°λ³Έ μƒμ„±μž 호좜

super();λŠ” λΆ€λͺ¨μ˜ κΈ°λ³Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•œλ‹€.

 

public class parent{
	public String a;
    public String b;
    
    public parent(String a, String b){
		this.a = a;
        this.b = b;
        }
    public void plus(int a){
		a++;
        }
    }
    
    

public class child extends parent{
	public String c;
    
	public child(String a, String b, String c){
    	super(a,b);
        this.c = c; // child field c
        }
    
    @Override
    public void plus(int a){
		super.plus(a); // method μž¬μ •μ˜
        a+=2;
        }

 

 

3. λ©”μ†Œλ“œ μž¬μ •μ˜ (@Override)

 : μƒμ†λœ 일뢀 λ©”μ†Œλ“œλŠ” μžμ‹ ν΄λž˜μŠ€μ—μ„œ λ‹€μ‹œ μˆ˜μ •ν•˜μ—¬ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

1. λΆ€λͺ¨ λ©”μ†Œλ“œμ™€ λ™μΌν•œ μ‹œκ·Έλ‹ˆμ²˜(return, parameter variable, method name)을 κ°€μ Έμ•Ό ν•œλ‹€.

2. μ ‘κ·Όμ œν•œμ„ 더 κ°•ν•˜κ²Œ μž¬μ •μ˜ λΆˆκ°€λŠ₯ν•˜λ‹€. (public이라면 protected, default, private 둜 μž¬μ •μ˜λŠ” λΆˆκ°€λŠ₯)

3. μƒˆλ‘œμš΄ μ˜ˆμ™Έ (Exception)λ₯Ό throws ν•  수 μ—†λ‹€.

 

public class parent{
	public void plus(int a){
		a++;}
        
     }
     
     
public class child extends parent{
	@Override
    public void plus(int a){
		a=a+2;}
        
   }

 

 

4. final ν΄λž˜μŠ€μ™€ final λ©”μ†Œλ“œ

- final class

: 클래슀 μ„ μ–Έ ν•  λ•Œ final ν‚€μ›Œλ“œλ₯Ό class μ•žμ— 뢙이면 μ΅œμ’…μ μΈ class λ―€λ‘œ 상속할 수 μ—†λŠ” 클래슀

public final class ClassName{...}

 

- final method

: μ΅œμ’…μ μΈ λ©”μ†Œλ“œμ΄λ―€λ‘œ μž¬μ •μ˜ ν•  수 μ—†λŠ” λ©”μ†Œλ“œ, λΆ€λͺ¨ classμ—μ„œ μ„ μ–Έλœ final method λŠ” μžμ‹ ν¬λž˜μŠ€μ—μ„œ μž¬μ •μ˜ λΆˆκ°€λŠ₯

public final void methodName(){...}

 

5. Protected μ ‘κ·Ό μ œν•œμž

: 같은 package λ‚΄μ—μ„œλ‚˜ μžμ‹ 클래슀만 접근이 κ°€λŠ₯ν•˜λ‹€.

 λ‹€λ₯Έ packageμ—μ„œλŠ” μƒμ„±μžλ₯Ό μ—°μ‚°μžλ₯Ό ν†΅ν•΄μ„œ 직접 ν˜ΈμΆœν•  수 μ—†κ³ , μžμ‹ μƒμ„±μžμ—μ„œ super() 둜 호좜이 κ°€λŠ₯ν•˜λ‹€.

 

// child 와 parent λŠ” μ„œλ‘œ λ‹€λ₯Έ package

public class Child extends Parent{
	
    public void method(){
    	// Parent parent = new Parent(); 였λ₯˜ λ°œμƒ
        
        super.method(); // super둜 μ‚¬μš©
        
        }

 

 

[좜처] ν˜Όκ³΅μžλ°” p. 310 ~ p. 331

728x90