컴퓨터프로그래밍/JAVA

오버라이딩(overrriding), 오버로딩(overloading)

zelkova 2016. 4. 22. 11:22

<목차로 돌아가기>


  오버라이딩


상속은 부모클래스를 그대로 가져와서 약간만 추가해서 사용한다는 개념이다.


하지만 부모클래스의 있는그대로만 사용한다면 약간이라도 수정하고 싶을때 다시 만들어야 된다는 불편함이 있다.


그래서 나온것이 오버라이딩이다.


부모가 가지고 있는 메소드를 쓰긴했지만 자식클래스의 필요에 따라서 자식 메소드를 변경하는 방법이다.


아래의 소스가 저번 포스팅에서 사용했던 예제이다. 아래에서 빨간색으로 표시한 것이 내용이다.


class computer{

public void setAppend{char a);

String+=a;

}

public void Sum(int a, int b)

System.out.println(a+b);

}

}


class substract extends computer{

public void sub(int a, int b){

System.out.println(a-b);

}

public void sum(int a, int b)

System.out.println(a+b+10);

}

}


public class Main{

public static void main(String[] args){

substract s = new substract();

s.setAppend('k');

s.sum(5,6);

s.sub(10,7);

}

}


제약조건

1. 부모의 리턴타입(데이터타입)과 자식의 데이터타입이 일치해야 한다.

2. 부모의 메소드와 자식의 메소드 이름이 같아야 한다.

3. 부모의 매개변수와 자식의 매개변수가 같아야한다.

4. 부모의 매개변수 갯수와 자식의 매개변수 갯수가 같아야 한다.


  오버로딩


함수이름도 같고 내용이 같지만 매개변수가 달라짐으로써 함수를 다시 만들어야 되는 귀찮은 상황을 피하기 위해서 만들어진 개념이다.


class computer{


public void Sum(int a, int b)

this.a=a;

this.b=b;

System.out.println(a+b);

}

public void Sum(int a, int b, int c)

this.Sum(int a, int b); //위의 중복된 내용을 가져옴.

this.c=c;

System.out.println(a+b+c);

}

}


public class Main{

public static void main(String[] args){

substract s = new substract();

s.sum(5,6);

s.sum(5,6,8);

}

}


결과값

11

19

이다.


매개변수가 달라짐으로써 그냥 복사 붙여넣고 매개변수만 추가하고 내용 살짝 바꿔주면 된다.



반응형

'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글

JAVA-도형그리기  (0) 2016.04.26
Java - 윈도우 프로그래밍(기본화면)  (0) 2016.04.25
자바의 상속  (0) 2016.04.20
데이터 타입, 문자열 형변환  (0) 2016.04.17
패키지  (0) 2016.04.16