«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

장미의 개발일기

메소드 오버라이딩(Method Overriding) 본문

개발일기/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. 원 클래스의 오버라이딩 메소드 부분을 주석처리 후 실행

 

 

 

맨 첫줄은 슈퍼클래스의 메소드

 

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

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