Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 기간설정
  • Database
  • HTML
  • Javascript
  • 백준
  • 시작일종료일
  • 비쥬얼스튜디오코드
  • SQLD합격후기
  • 오류해결
  • 연습문제
  • sql기간
  • AllArgsConstructor
  • googlecolaboratory
  • 기간쿼리
  • 창초기화
  • 노마드코더
  • CSS
  • 콜라보레이토리
  • Eclipse
  • 독학후기
  • spring
  • 파이썬온라인
  • oracle
  • 서버등록
  • colaboratory
  • 코딩앙마
  • 이것이자바다
  • SQLD합격
  • SQL
  • java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[이것이 자바다 - 연습문제] chapter 06. 클래스
🤯TIL/JAVA

[이것이 자바다 - 연습문제] chapter 06. 클래스

2022. 11. 7. 19:44
728x90

책 버전

0. 문제
➡ 정답

(설명)

 

1. 객체와 클래스에 대한 설명으로 틀린 것은 무엇입니까?

➡ 하나의 클래스로 하나의 객체만 생성할 수 있다.

 

(설명)

하나의 클래스로 new 연산자 호출 시 호출하는 만큼 객체 생성 가능


2. 클래스의 구성 멤버가 아닌 것은 무엇입니까?

➡ 로컬 변수(local variable)

 

(설명)

클래스의 구성 멤버는 필드 field, 생성자 constructor, 메소드 method 이다.


3. 필드, 생성자, 메소드에 대한 설명으로 틀린 것은 무엇입니까?

➡ 클래스는 반드시 필드와 메소드를 가져야 한다.

 

(설명)

필드는 객체의 데이터를 저장한다.

반드시 x, 필드를 갖고 있지 않는 클래스도 있고, 필드만 있는 클래스도 있을 수 있다!


4. 필드에 대한 설명으로 틀린 것은 무엇입니까?

➡ 필드는 반드시 생성자 선언 전에 선언되어야 한다.

 

(설명)

클래스 선언 시 필드를 먼저 선언하고 생성자 선언 다음에도 필드를 선언할 수 있다.

필드 선언 / 생성자 선언 / 필드 선언 순도 가능하다!


5. 생성자에 대한 설명으로 틀린 것은 무엇입니까?

➡ 객체를 생성하려면 생성자 호출이 반드시 필요한 것은 아니다.

 

(설명)

객체를 생성하려면 생성자 호출이 무조건! 필요하다!


6. 메소드에 대한 설명으로 틀린 것은 무엇입니까?

➡ 메소드의 이름은 중복해서 선언할 수 없다.

 

(설명)

메소드 재정의 (오버 로딩) 존재한다.

메소드의 이름은 중복해서 선언하나 실행부 내용이 다른 것.


7. 메소드 오버로딩에 대한 설명으로 틀린 것은 무엇입니까?

➡ 반드시 리턴 타입이 달라야 한다.

 

(설명)

반드시 x, 리턴 타입과 오버 로딩은 상관이 없다.


8. 인스턴스 멤버와 정적 멤버에 대한 설명으로 틀린 것은 무엇입니까?

➡ 인스턴스 필드는 생성자 및 정적 블록에서 초기화될 수 있다.

 

(설명)

정적 블록 static { } : 클래스가 메모리로 로딩될 때 자동 실행된다.

static 안에 인스턴스 필드 사용 불가능(초기화할 수 없기 때문에)


9. final 필드와 상수(static final)에 대한 설명으로 틀린 것은 무엇입니까?

➡ final 필드와 상수는 생성자에서 초기화될 수 있다.

 

(설명)

상수를 선언할 때 값을 주던지, 정적 블록에서 초기화를 줘야 하는데 이미 상수는 객체를 생성하기 전에 완성이 되어있어야 하기 때문에 생성자에서 초기화 될 수 없다.


10. 패키지에 대한 설명으로 틀린 것은 무엇입니까?

➡ mycompany 패키지에 소속된 클래스는 yourcompany에 옮겨 놓아도 동작한다.

 

(설명)

클래스를 선언할 때 패키지를 선언하면 클래스는 꼭 그 패키지 안에서만 동작을 한다.


11. 접근 제한에 대한 설명으로 틀린 것은 무엇입니까?

➡ default 접근 제한은 해당 클래스 내부에서만 사용을 허가한다.

 

(설명)

클래스 내부에서만 사용을 허가하는 것은 private 접근제한자이다.


12. 다음 클래스에서 해당 멤버가 필드, 생성자, 메소드 중 어떤 것인지 빈칸을 채우세요.

➡ 필드 / 생성자 / 메소드

(설명)

Field / Constructor / Method


13. 현실 세계의 회원을 Member 클래스로 모델링하려고 합니다. 회원의 데이터로는 이름, 아이디, 패스워드, 나이가 있습니다. 이 데이터들을 가지는 Member 클래스를 선언해보세요.

 

public class Member {
	// 작성 위치
}

➡ 

String name;

String id;

String password;

Int age;

 

(설명)

타입  + 필드 이름;


14. 위에서 작성한 Member 클래스에 생성자를 추가하려고 합니다.

      다음과 같이 Member 객체를 생성할 때 name 필드와 id 필드를 외부에서 받은 값으로 초기화하려면

      생성자를 어떻게 선언해야 합니까?

 

Member user1 = new Member("홍길동", "hong");

Member user2 = new Member("감자바", "java");

public class Member {
	// 작성 위치
}

➡ 13번 답 이어서 붙이기

 

Member (String name, String id) {

     this.name = name;

     this. id = id;

}

     

(설명)

생성자 만들기

클래스 이름 (매개 변수 , ...) {

    this.name = 매개변수 값;

}


15. login() 메소드를 호출할 때에는 매개 값으로 id와 password를 제공하고,

     logout() 메소드는 id만 매개값으로 제공합니다. 

 

(1) login() 메소드는 매개값 id가 "hong". 매개값 password가 "12345"일 경우에만 true로 리턴하고
     그 이외의 값일 경우에는 false를 리턴

(2) logout() 메소드의 내용은 "로그아웃 되었습니다."가 출력되도록 하세요.

 

public class MemberService {
	// 작성 위치
}
public class MemberService Example {
	public static void main(String[] args) {
    	MemberService memberservice = new MemberService();
        boolean result = memberservice.login("hong", "12345");
        if(result) {
        	System.out.println("로그인 되었습니다.");
            memberservice.logout("hong");
        } else {
            System.out.println("id 또는 password가 올바르지 않습니다.");
        }
    }
}

➡

String id;
String password;

boolean login(String id, String password) {
if(id == "hong" && password == "12345") {
return true;
} else {
return false;
}
}

void logout(String id) {
System.out.println("로그아웃 되었습니다.");
}

 


16. PrinterExample 클래스에서 Printer 객체를 생성하고 println() 메소드를 호출해서 매개값을 콘솔에 출력하려고 합니다. println() 메소드의 매개값으로는 int, boolean, double, String 값을 줄 수 있습니다. Printer 클래스에서 println() 메소드를 선언해보세요.

public class Printer {
	// 작성 위치
}
public class PrinterExample {
	public static void main(String[] args) {
    	Printer printer = new Printer();
        printer.println(10);
        printer.println(true);
        printer.println(5.7);
        printer.println("홍길동");
    }
}

➡

public void println(int x) {System.out.println(x);}
public void println(boolean x) {System.out.println(x);}
public void println(double x) {System.out.println(x);}
public void println(String x) {System.out.println(x);}

 

(설명)

객체를 생성해야 메소드 호출이 가능


17. Printer 객체를 생성하지 않고 PrinterExample 클래스에서 다음과 같이 호출하려면 Printer 클래스를 어떻게 수정하면 될까요?

public class Printer {
	// 작성 위치
}
public class PrinterExample {
	public static void main(String[] args) {
        Printer.println(10);
        Printer.println(true);
        Printer.println(5.7);
        Printer.println("홍길동");
    }
}

➡

static public void println(int x) {System.out.println(x);}
static public void println(boolean x) {System.out.println(x);}
static public void println(double x) {System.out.println(x);}
static public void println(String x) {System.out.println(x);}

 

(설명)

16번과 비슷하지만 앞에 STATIC을 붙이게 되면 정적메소드가 되므로 객체마다 있는 메소드가 되는게 아니라

클래스 이름으로 바로 접근하여 메소드 호출이 가능하다:)


18. ShopService 객체를 싱글톤으로 만들고 싶습니다. ShopServiceExample 클래스에서 ShopService의 getInstance() 메소드로 싱글톤을 얻을 수 있도록  ShopService 클래스를 작성해보세요.

public class ShopService {
	// 작성 위치
}
public class ShopServiceExample {
	public static void main(String[] args) {
    	ShopService obj1 = ShopService.getInstance();
        ShopService obj2 = ShopService.getInstance();
        
        if(obj1 == obj2) {
        	System.out.println("같은 ShopService 객체 입니다.");
        } else {
            System.out.println("다른 ShopService 객체 입니다.");
        }
    }
}

➡ 

private static ShopService singleton = new ShopService();
private ShopService() {
}
public static ShopService getInstance() {
return singleton;
}

 


19. 은행 계좌 객체인 Account 객체는 잔고 (balance) 필드를 가지고 있습니다. balance 필드는 음수 값이 될 수 없고, 최대 백만 원까지만 저장할 수 있습니다. 외부에서 balance 필드를 마음대로 변경하지 못하도록 하고, 0 <= balance <=  1,000,000 범위의 값만 가질 수 있도록 Account 클래스를 작성해보세요.

public class Account {
//작성 위치
}
public class AccountExample {
	public static void main(String[] args) {
		Account account = new Account();
		
        account.setBalance (10000);
		System.out.printIn("현재 잔고: " + account.getBalance());

        account.setBalance (-100);
        System.out.printIn("현재 잔고: " + account.getBalance());
        
        account.setBalance(2000000);
        System.out.printIn("현재 잔고: " + account.getBalance());
        
        account.setBalance(3000000);
        System.out.printIn("현재 잔고: " + account.getBalance());
        }
}

➡

public static final int MIN_BALANCE = 0;
public static final int MAX_BALANCE = 1000000;

private int balance;

public int getBalance() {
return balance;
}

public void setBalance(int balance) {
if(balance < Account.MIN_BALANCE ||
balance > Account.MAX_BALANCE) {
return; // 메소드 실행을 끝내버림
}
this.balance = balance;

}


20번은 패스하겠습니다.

728x90
저작자표시 (새창열림)

'🤯TIL > JAVA' 카테고리의 다른 글

[이것이 자바다 - 연습문제] chapter 08. 인터페이스  (0) 2022.11.09
[이것이 자바다 - 연습문제] chapter 07. 상속  (0) 2022.11.08
[이것이 자바다 - 연습문제] chapter 05. 참조 타입  (0) 2022.10.13
[이것이 자바다 - 연습문제] chapter 04. 조건문과 반복문  (0) 2022.10.11
[연습문제] Getter Setter 메소드의 호출과 정의  (0) 2022.10.10
    '🤯TIL/JAVA' 카테고리의 다른 글
    • [이것이 자바다 - 연습문제] chapter 08. 인터페이스
    • [이것이 자바다 - 연습문제] chapter 07. 상속
    • [이것이 자바다 - 연습문제] chapter 05. 참조 타입
    • [이것이 자바다 - 연습문제] chapter 04. 조건문과 반복문
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바