[JAVA] 오버로링 & 오버라이딩

HEETAE HEO·2022년 5월 24일
0
post-thumbnail

오버로딩(Overloading)

  • 메서드의 이름은 같고 매개변수의 개수나 타입이 다른 함수를 정의하는 것을 의미합니다.
  • 리턴 값만을 다르게 갖는 오버로딩은 작성할 수 없습니다.

오버라이딩(Overriding)

  • 상위 클래스의 메서드를 하위 클래스가 재정의하는 것이다.
  • 메서드의 이름은 물론 파라미터의 개수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받은 하위 클래스에서 변경하기 위해 사용됩니다.

이렇게 설명하는 것보다는 코드를 보며 설명하겠습니다.

오버로딩 코드(Overloading)

class Overloading{

	void car(){
    	System.out.println("차 입니다.");
    }
    void car(int a){
    	System.out.println("총 차의 수는"+a+"개 입니다.");
    }
    void car(String str){
    	System.out.println("이 차의 이름은"+str+"입니다.");
    }

}

위의 코드가 오버로딩 코드의 예시입니다. 이름이 car인 같은 메서드가 존재합니다. 차이라고 한다면 매개변수의 유형이 다르다는 것입니다. 이를통해 알 수 있는 것은 메서드의 이름은 같더라도 매개변수가 다르면 선언이 가능하다는 것입니다. 이렇게 선언을 한다면 메서드의 이름을 억지로 확장해야하는 경우가 줄어들고 사용자가 헷갈릴 일도 없다는 것입니다.

오버라이딩 코드(Overriding)

class Human{
	public String name;
    public int age;
    
    public void myself(){
		System.out.println("이름은 "+name+"이고 나이는"+age+"살 입니다.");
    }
}

class Women extends Human{
	
    public void myself(){
    	System.out.println("이름은 "+name+"이고 성별은 여자이고 나이는"+age+"살 입니다.");
    }
}


class main
....
	public static void main(String[] args){
    
    Women women = new Women();
    
    women.name = "민서";
    women.age = 25;

이런식으로 이미 선언되어 있는 클래스을 상속받고 상속을 해주는 클래스를 부모 클래스라고 부르는데 부모 클래스에 정의되어있는 메서드를 수정할 수 있는 것입니다.

profile
Android 개발 잘하고 싶어요!!!

0개의 댓글