본문 바로가기
JAVA

상속 :: extends

by 우영11 2024. 8. 27.

메인클래스에서 객체를 끌어다 쓸 때 같은 메서드가 있으면

각 객체의 같은 메서드를 가져올 필요없이

부모에게 상속 받아서 그 객체의 메서드인것 처럼 쓸 수 있다.

 

상속하는 방법 extends 클래스이름

 

<Example 클래스>

public class Example {

    public static void main(String[] args) {
    
    	One one = new One();
        one.value();
        one.first();
        
        Two two = new Two();
        two.value();
        two.second();

    }
}

위와 같은 코드를 실행할 때, 각각 이름이 One과 Two인 클래스를 통해 객체를 생성했다.

 

<One 클래스>

public class One{
	
    public void value(){
    	System.out.println("공통 메서드")
    }
    
    public void one(){
    	System.out.println("one메서드")
    }
}

 

<Two 클래스>

public class Two{
	
    public void value(){
    	System.out.println("공통 메서드")
    }
    
    public void two(){
    	System.out.println("two메서드")
    }
}

 

각 객체에 value()라는 메서드가 공통인데, 이를 부모 클래스에 작성하고 상속을 시키면 각 객체의 메서드처럼 사용할 수 있다.

 


<<상속을 사용한 수정된 코드>>

 

<Parent 클래스>

public class Parent{

    public void value(){
	System.out.println("공통 메서드")
    }
}

 

<수정된 One 클래스>

public class One extends Parent{
    
    public void one(){
    	System.out.println("one메서드")
    }
}

 

<수정된 Two 클래스>

public class Two extends Parent{
	
    public void two(){
    	System.out.println("two메서드")
    }
}

 

이와같이 수정하면 메인클래스에서 메서드를 동일하게 사용할 수 있다.

 

오버라이딩(Overriding)

오버라이딩은 상속받은 기능을 확장(extend)하고 싶을 때 부모의 기능을 따르지 않고 추가할 수 있다.

public class One extends Parent{
    
    public void one(){
    	System.out.println("one메서드");
    }
    
    @Override
    public void value(){
    	System.out.println("새로운 value");
    }
}

 

One의 부모인 Parent 클래스에 value()라는 메서드가 있지만 오버라이딩으로 인해 부모를 호출하지 않고 본인클래스의 value()를 사용한다.

'JAVA' 카테고리의 다른 글

다형성의 이해와 다운캐스팅 (instanceof)  (0) 2024.08.28
super, super()  (0) 2024.08.27
상속 메모리 구조  (0) 2024.08.27
final 키워드  (0) 2024.08.27
static  (0) 2024.08.26