[자바의정석] 객체지향 연습문제 6-1, 6-2

Kwangmo Yang·2022년 7월 24일
0

JAVA

목록 보기
1/6
post-thumbnail

학원에서 JAVA 진도를 나가기 시작했다. 객체지향 이전 연산자,배열등은 어느정도 이해했으니 어려운 객체지향 문제들을 풀어보면서 계속 이해해보려 한다.

1번 문제

정답

class SutdaCard{
	int num;
	boolean isKwang;
    }

이런건 뭐 easy- 하다

2번 문제


정답

메인 메서드

package practice;

public class oop6_1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		SutdaCard card1 = new SutdaCard(3, false);
		SutdaCard card2 = new SutdaCard();
		
		System.out.println(card1.info());
		System.out.println(card2.info());
	}

}

클래스

class SutdaCard{
	int num;
	boolean isKwang;
	
	SutdaCard(){
		this(1, true);
	}
	SutdaCard(int num, boolean isKwang){
		this.num = num;
		this.isKwang = isKwang;
	}
	
	String info() {
		return num + ( isKwang ? "K":" ");
	}
	
}

정답 해설은 아래의 그림을 보며 이해해보자

8번라인에는 내가 원하는 값들을
9번라인에선 기본 세팅된 값을 설정해주었다.

8번라인에서 설정해준 값은 23번에 생성한 파라미터 값에 각각 대입되어 SutdaCard 클래스 속성에 입력된다.

9번 라인에서는 설정해준 값이 없기 때문에 기본생성자에 세팅해준 기본 값으로 설정이 된다.

그리고 실제 출력시키는 11,12번 라인을 보면 info()메서드를 거쳐 출력이 된다.

String info() {
		return num + ( isKwang ? "K":" ");
	}

처음에는 void개념을 까먹어서 무작정 void info() 를 썼는데
다시 검색해보니 void는 return값이 필요 없을때 사용을 하지만,
위 메서드는 return 값을 받아야 하기 때문에, void를 쓰지 않고
내가 원하는 타입을 지정해주어야 한다.

근데 난 int와 boolean값을 리턴해야 하는데
int info()를 쓰면 boolean에서 에러가뜨고
boolean info()를 쓰면 int에서 에러가떠서
어떻게 해결해야 할까 하다가 String으로 형변환을 하면 되겠구나 라고 생각했다 (답지 봄)

isKwang이 true일 경우 K문자가 붙어서 나오고
false일 경우 K문자가 안붙어 나오도록 삼항 연산자를 사용해서 값을 출력해 냈다.

딩동댕동

profile
국비교육중 22.04.26~

0개의 댓글