«   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
관리 메뉴

장미의 개발일기

인터페이스 상속 : 예제 ( 중앙부서, 모형부서3) 본문

개발일기/Java

인터페이스 상속 : 예제 ( 중앙부서, 모형부서3)

민장미 2023. 4. 25. 14:27

원래 

중앙부서(슈퍼클래스) < =  원, 삼각형, 사각형 부서 (서브클래스 3개) 이거 였는데

중앙부서를 인터페이스로 바꿔서 해보았다.

 

원래의 예제: 

메소드 오버라이딩(Method Overriding) (tistory.com)

 

1. 인터페이스: 중앙부서 

package repeat_company;

public interface Main_Team {
	
	
	String getColor();//컬러를 반환
	
	
	
	char getLogo();
	
	void setLogo(char logo);
	
	void drawSomething();

	void setColor(String color);// 색깔 설정
	

}

 

2. 클래스가 인터페이스 중앙부서 구현 (순서대로 원, 세모, 사각형)

 

package repeat_company;

public class Circle implements Main_Team{

	
	private String color;
	private char logo;
	
	
	@Override
	public String getColor() {
		// TODO Auto-generated method stub
		return color;
	}


	@Override
	public void setColor(String color) {
		// TODO Auto-generated method stub
		this.color = color;
	}

	@Override
	public char getLogo() {
		// TODO Auto-generated method stub
		return logo;
	}

	@Override
	public void setLogo(char logo) {
		// TODO Auto-generated method stub
		this.logo = logo;
	}

	@Override
	public void drawSomething() {
		System.out.println("Circle팀이 "+getColor()+"의 "+getLogo()+"를 그렸습니다.");
	} //멤버는 접근불가니 get 메소드를 이용하여 멤버를 호출 
	
}

 

package repeat_company;

public class Triangle implements Main_Team{
	private String color;
	private char logo;
	
	
	@Override
	public String getColor() {
		// TODO Auto-generated method stub
		return color;
	}


	@Override
	public void setColor(String color) {
		// TODO Auto-generated method stub
		this.color = color;
	}

	@Override
	public char getLogo() {
		// TODO Auto-generated method stub
		return logo;
	}

	@Override
	public void setLogo(char logo) {
		// TODO Auto-generated method stub
		this.logo = logo;
	}

	@Override
	public void drawSomething() {
		System.out.println("Triangle팀이 "+getColor()+"의 "+getLogo()+"를 그렸습니다.");
	} //멤버는 접근불가니 get 메소드를 이용하여 멤버를 호출 
	

}

 

package repeat_company;

public class Ranctect implements Main_Team {
	private String color;
	private char logo;
	
	
	@Override
	public String getColor() {
		// TODO Auto-generated method stub
		return color;
	}


	@Override
	public void setColor(String color) {
		// TODO Auto-generated method stub
		this.color = color;
	}

	@Override
	public char getLogo() {
		// TODO Auto-generated method stub
		return logo;
	}

	@Override
	public void setLogo(char logo) {
		// TODO Auto-generated method stub
		this.logo = logo;
	}

	@Override
	public void drawSomething() {
		System.out.println("Rectect팀이 "+getColor()+"의 "+getLogo()+"를 그렸습니다.");
	} //멤버는 접근불가니 get 메소드를 이용하여 멤버를 호출 
	

}

 

3. 메인함수 

인터페이스형 배열 생성한 후에 로 세 가지 모형 클래스를 원소로 대입

for-each문을 사용하여 , 

색깔 배열과 로고 배열에서 순서대로 각 모형부서와 매치시키고,

drawSomething 메소드를 일괄 실행시키기.

package repeat_company;

public class CompanyMain {
	
public static void main(String[] args) {
	
	Circle c = new Circle();
	Triangle t = new Triangle();
	Ranctect r = new Ranctect();
	
	Main_Team[] teams = { c, t, r};
	String[] colors = {"빨간색", "파란색","노랑색"};
	char[] logos = {'●','△','■'};
	
	int idx=0;
	for(Main_Team e: teams) {
		e.setColor(colors[idx]);
		e.setLogo(logos[idx]);
		e.drawSomething();
		idx++;
	}
	
}	

}

출력화면: