개발일기/Java
메소드 오버라이딩(Method Overriding)
민장미
2023. 4. 25. 00:18
자바같은 객체지향 언어에서 매우 중요한 개념중 하나!
개념관련 포스팅은 나중에 해보려고 한다.
우선 연습한 예제.
//회사 모든 부서를 관리하는 중앙부서(슈퍼클래스)
//각 모형을 제작하는 원, 삼각형, 사각형 부서(서브클래스)
//원 부서에 처음엔 오버라이딩 하지말고, 다른 메소드를 적용시켜보기.
//그 후에 오버라이딩해서 비교해보기
//메인함수에서 슈퍼클래스형 배열을 생성하여, 서브클래스 객체들을 대입하기.
//For-each문을 이용하여 객체 3개에 슈퍼클래스에서 상속 받았던 색,로고 기본 값을
메인에 게시된 색,로고 값으로 바꿔보기
// 오버라이딩했던 메소드도 for each문 안에서 간단하게 실행시켜보기
1. 슈퍼클래스: 메인팀
package company;
public class MainTeam {
private String color;
private char logo;
public MainTeam() {
color = "검은색";
logo = '♥';
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public char getLogo() {
return logo;
}
public void setLogo(char logo) {
this.logo = logo;
}
public void drawSomething() {
System.out.println("오버라이딩이 안되서 나타나는 문구");
}
}
2. 서브클래스1: 원
package company;
public class Circle extends MainTeam{
@Override public void drawSomething() {
System.out.println("Circle 팀이 "+getColor()+getLogo()+"을 그렸습니다."); }
public void drawCircle() {
System.out.println("Circle 팀이 "+getColor()+getLogo()+"을 그렸습니다.");
}
}
3.서브클래스2 : 삼각형
package company;
public class Triangle extends MainTeam {
@Override
public void drawSomething() {
System.out.println("Triangle 팀이 "+getColor()+getLogo()+"을 그렸습니다.");
}
}
4.서브클래스3 : 사각형
package company;
public class Rantangle extends MainTeam {
@Override
public void drawSomething() {
System.out.println("Rantangle 팀이 "+getColor()+getLogo()+"을 그렸습니다.");
}
}
5. 메인 함수
package company;
public class CompanyMain {
public static void main(String[] args) {
Circle ref1 = new Circle();
Triangle ref2 = new Triangle();
Rantangle ref3 = new Rantangle();
MainTeam[] teams = {ref1, ref2, ref3};
String[] colors = {"분홍색", "노랑색", "파랑색"};
char[] logos = {'○','▲','□'};
int i=0;
for(MainTeam e : teams) {
e.setColor(colors[i]);
e.setLogo(logos[i]);
e.drawSomething();
i++;
}
}
}
출력화면:
1. 원 클래스의 오버라이딩 메소드 부분을 주석처리 후 실행


원 클래스도 오버라이딩된 메소드를 실행시켜서 출력된 정상 화면.

오버라이딩을 사용하면, 더 유연하고 간결한 코드를 짤 수 있다.