도라에몽주머니

[Java/Eclipse] Java 28일차 본문

Study/Java

[Java/Eclipse] Java 28일차

에몽쓰 2022. 10. 25. 16:50

Java

 

상속

  • 부모클래스로 매개변수를 전달하는 경우, 자식클래스의 객체를 매개변수로 전달할 수 있음
  • 자식클래스로 매개변수를 전달하는 경우, 부모클래스의 객체는 매개변수로 전달할 수 없음

 

예제

다형성을 이용해서 도형의 높이와 출력 문자를 입력받아 도형을 그리는 프로그램을 작성하시오.

 

1. DrawData.java

- 멤버필드

높이, 출력문자

- 멤버메소드

setHeight()

setOutchar()

getHeight()

getOutchar()

draw() - 다형성 이용

 

2. IsoTriangle.java → DrawData 클래스 상속

- 멤버메소드

draw() - 출력문자로 도형그리기

 

3. Pyramid.java → DrawData 클래스 상속

- 멤버메소드

draw() - 출력문자로 도형그리기

 

<실행 결과>

x
xx
xxx
xxxx
xxxxx
xxxxxx
xxxxxxx
xxxxxxxx
xxxxxxxxx
xxxxxxxxxx
         #
        ###
       #####
      #######
     #########
    ###########
   #############
  ###############
 #################
###################

// Prac1.java

public class Prac1 {
	public static void main(String[] args) {
		DrawData drawData;
		
		drawData = new IsoTriangle();
		drawData.setHeight(10);
		drawData.setOutchar('x');
		drawData.draw();
		
		drawData = new Pyramid();
		drawData.setHeight(10);
		drawData.setOutchar('#');
		drawData.draw();
	}
}
// DrawData.java

public class DrawData {
	private int height;
	private char outchar;
	
	
	public int getHeight() {
		return height;
	}
	public void setHeight(int height) {
		this.height = height;
	}
	public char getOutchar() {
		return outchar;
	}
	public void setOutchar(char outchar) {
		this.outchar = outchar;
	}
	
	public void draw() {
		
	}
	
}
// IsoTriangle.java

public class IsoTriangle extends DrawData {
	public void draw() {
		for(int i=1; i<=super.getHeight(); i++) { // 층
			for(int j=1; j<=i; j++) { // "*" 문자 출력
				System.out.print(super.getOutchar());
			}
			System.out.println();
		}
	}
}
// Pyramid.java

public class Pyramid extends DrawData {
	public void draw() {
		for(int i=1; i<=super.getHeight(); i++) { // 층
			for(int j=1; j<=super.getHeight()-i; j++) { // 공백 출력
				System.out.print(" ");
			}
			
			for(int k=1; k<=2*i-1; k++) { // "*" 문자 출력
				System.out.print(super.getOutchar());
			}
			System.out.println();
		}
	}
}

 

 

추상화(Abstraction)

: 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것.

  • 상속 받는 클래스에게 특정 함수를 강제로 만들게 할 때 사용
  • 추상 클래스는 단독으로 사용할 수 X (new로 선언 불가)
  • 반드시 상속해서 사용해야 함

'Study > Java' 카테고리의 다른 글

[Java/Eclipse] Java 30일차  (0) 2022.10.27
[Java/Eclipse] Java 29일차  (0) 2022.10.26
[Java/Eclipse] Java 27일차  (0) 2022.10.24
[Java/Eclipse] Java 26일차  (0) 2022.10.21
[Java/Eclipse] Java 24, 25일차  (0) 2022.10.20