Java/문제

자바스터디 6주차 문제 풀이(클래스, 상속 관련)

열지희공 2021. 2. 19. 00:29

(1) 날짜를 나타내는 클래스 Date를 만들어보자. Date는 연도, 월, 일 등의 속성을 가지며, 날짜를 "2012,7,12"와 같이 출력하는 메소드 print1(), 날짜를 "July 12,2012"와 같이 출력하는 print2() 등의 메소드를 가진다. Date 클래스를 작성하고 객체를 생성하여 테스트 하라.

-> 년도, 월, 일을 입력받아

print1() print2() 메소드를 이용해 출력받도록 하기!

입출력예시)

[입력] 연도, 월, 일을 입력하시오 : 2021 2 2

[출력] 2021,2,2

        February 2, 2021

hint) 조건문 중 case 이용하시면 편리할 것 같습니당

 

풀이

Date 클래스에 필요한 필드와 생성자, print1(), print2() 메소드를 작성한다.

실행 클래스에서는 입력예시 문장 출력과 입력 받기, 객체 생성 후 메소드 실행까지의 코드를 작성한다.

 

내코드

Date 클래스
실행 클래스
입출력 결과

 

 

print1()메소드는 단순히 출력만 해주면 되었다.

print2()메소드에서는 힌트처럼 case를 이용해 month를 각 달에 해당하는 영어로 바꿔주었다. 이를 위해 year, month, day를 int가 아닌 string으로 입력받았다.

 

 

(2) 원을 표현하는 다음 Circle 클래스가 있다. Circle 클래스를 상속받은 NamedCircle 클래스를 작성하여, 다음 main()을 실행할 때 다음 실행 결과와 같이 출력되도록 하라.

public class Circle {
	private int radius;
	public Circle(int radius) {
		this.radius = radius;
	}
	public int getRadius() {
		return radius;
	}

}

<실행결과> Waffle, 반지름 = 5

 

풀이

NamedCircle클래스에 필요한 필드와 생성자, Waffle과 같은 이름과 반지름을 출력하는 getNameRadius()메소드를 작성한다.

실행 클래스에는 객체를 생성하고 메소드를 실행시키는 코드를 작성한다.

 

내코드

 

Circle 클래스
NamedCircle 클래스

 

실행 클래스
출력결과

 

다시 복습해보자면 부모 클래스에 기본생성자가 없고 매개변수가 있는 생성자만 있을 경우 자식 클래스의 생성자 첫줄에 부모 생성자를 호출하는 super(매개값, ...)을 명시적으로 호출해야 한다. 

Circle클래스(부모)도 기본 생성자가 없고 매개변수가 있는 생성자만 있으므로 NamedCircle클래스(자식)의 생성자 첫 줄에는 반드시 super(radius);를 적어야 한다.

 

상속 포스팅

darkslateblue.tistory.com/12

 

7. 상속(1)(상속 개념/ 클래스 상속/ 부모 생성자 호출/ 메소드 재정의/ final 클래스와 final 메소드)

1. 상속 개념 부모 클래스의 멤버를 자식 클래스에게 물려주는 것  -> 자식 클래스는 상속을 통해 부모 클래스가 물려준 것을 자연스럽게 이용할 수 있음 * 상속 대상에서 제외되는 것  -부모 클

darkslateblue.tistory.com

 

-------------------------------------------------