문제풀이

Review 0527

H_eh 2022. 5. 30. 00:08
  • main 함수를 보고 class 만들기
main(){
	Book b1 = new Book("멋진 신세계", "올더스 헉슬리");
    Book b2 = new Book("더 해빙");
    Book b3 = new Book();
}

/*
실행결과) 멋진 신세계 올더스 헉슬리
         더 해빙 작가 미상
         생성자 호출!!
*/
  • 접근제어자
  • private → default → protected → public
    • private : 해당 클래스에서만 접근 가능
    • default : 해당 패키지에서만 접근 가능
    • protected : 동일 패키지&해당 클래스를 상속받은 다른 패키지에서 접근 가능
    • public : 모든 클래스에서 접근 가능
  • this
    • 인스턴스 자신을 가리키는 참조변수
    • this 참조변수를 사용하여 인스턴스 변수에 접근 가능
    • 인스턴스 메소드에서만 사용가능하고 클래스 메소드(static 메소드)에서는 사용이 불가하다
  • this()
    • 같은 클래스의 다른 생성자를 호출할 때 사용
    • 생성자 내부에서만 사용 가능
더보기
class Book {
	private String title, author;	//인스턴스 변수
	
	Book(String title, String author) {
		this.title=title;	this.author=author;
		info();
	}
	Book(String t){
		this(t, "작자 미상");
	}
	Book(){
		this("생성자 호출!", "");
	}
	void info() {
		System.out.println(title +" "+ author);
	}
}

public class Re0527 {
	public static void main(String[] args) {
		Book b1 = new Book("멋진 신세계", "올더스 헉슬리");
		Book b2 = new Book("더 해빙");
		Book b3 = new Book();
	}
}

 

 

 

  • Friend 클래스를 상속받은 ITFriend 클래스 구현
class Friend {
	private String name;
    private String phone;
    
    Friend(String name, String phone){
    	this.name = name;	this.phone = phone;
    }
    String get(){
    	return name+" "+phone;
    }
}

Main(){
	ITFriend it = new ITFriend("홍길동", "010-111-1111", "컴퓨터");
    it.show();
}

//실행결과) 컴퓨터 홍길동 번호 010-111-1111
  • super
    • 부모 클래스의 멤버에 접근 가능
    • 인스턴스 메서드에만 사용가능하고 클래스 메서드(static 메서드)에는 사용불가
  • super() 메서드
    • 부모 클래스의 생성자 호출
더보기
class Friend {
	private String name;
	private String phone;
	
	Friend(String name, String phone){
		this.name=name;		this.phone=phone;
	}
	String get() {
		return name+" "+phone;
	}
}

class ITFriend extends Friend {
	private String major;
	
	ITFriend(String n, String p, String m){
		super(n, p);
		major = m;
	}
	
	void show(){
		System.out.println( major+" "+get() );
	}
}

public class Re0527 {
	public static void main(String[] args) {
		ITFriend it = new ITFriend("홍길동", "010-111-1111", "컴퓨터");
		it.show();
	}
}

 

 

 

  • 5개 정수를 입력받아 합을 구하는 프로그램
  • 만약, 정수가 아닌 문자를 입력할 때 발생하는 InputMismatchException 예외를 처리하여 다시 입력받도록 작성

실행결과)  1번째 정수: 1

                  2번째 정수: a

                  정수만 입력가능합니다. 다시 입력하세요.

                  2번째 정수: 2

                  3번째 정수: 3

                  4번째 정수: 4

                  5번째 정수: 5

                  총합: 15

 

  • continue 문
    • 루프 안에서 사용하고, 해당 루프의 나머지 부분을 건너뛰고, 다음 조건식 판단으로 넘어간다.
  • break 문
    • 루프 안에서 사용하고, 해당 반목문을 종료시킨 뒤, 반복문 다음에 위치한 명령문을 실행한다.
더보기
public class Re0527 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int sum=0;
		int num;
		
		for(int i=0; i<5; i++) {
			try {
				num = sc.nextInt();
				System.out.println((i+1)+"번째 정수: "+num);
				sum+=num;
			}
			catch(InputMismatchException  e) {
				System.out.println("정수만 입력 가능합니다. 다시 입력하세요.");
				sc.next();
				i--;
				continue;
			}
		}
		System.out.println("총합: "+sum);
	}
}

 

 

 

 

  • 실수 9.5를 객체화(boxing) 시키시오.
  • 객체화 시킨 9.5를 문자열로 변경하시오.
  • 문자열로 변경한 9.5를 기본형값으로 unboxing 하시오.

 

  • 박싱(Boxing)
    • 기본타입 데이터 → 래퍼 클래스의 인스턴스로 변환
    • Integer num1 = new Integer(7);
    • 동등연산자(==) : 인스턴스의 주소값을 비교하게 된다.
    • equals() : 인스턴스의 저장된 값의 동등여부를 비교
  • 언박싱(UnBoxing)
    • 래퍼 클래스 인스턴스에 저장된 값  기본타입 데이터로 꺼내는 과정
    • int int1 = num1.intValue();
    • intValue() : Integer 객체에서 int 형 값을 꺼내는 메서드
    • parseInt() : String 객체에서 int 형 값을 꺼내는 메서드
      • static 이므로 Integer 생성하지 않고 parameter만 넣어서 메서드 수행 가능
      • int i = Integer.parseInt(str);
더보기
public class Re0527 {
	public static void main(String[] args) {
		Double d1 = new Double(9.5);
		String str1 = d1.toString();
		Double d2 = d1.doubleValue();
        
        Double d3 = Double.valueOf(str1);	//박싱
        double dd3 = Double.parseDouble(str1);	//언박싱
        double dd4 = d3.doubleValue();	//언박싱
	}
}

 

 

 

  • equals (두 원의 면적이 같은지 비교), toString 메서드를 사용하여 완성하시오. (반지름은 30이다)
Main(){
	Circle a = new Circle(30);
    Circle b = new Circle(30);
    
    System.out.println("반지름: "+a);
    System.out.println("반지름: "+b);
    
    if(a.equals(b)) {
    	System.out.println("같은 원");
    }
    else {
    	System.out.println("다른 원");
    }
}

 

더보기
class Circle {
	private int r;
	
	Circle(int r) {
		this.r = r;
	}
	
	public boolean equals(Object obj){
		if(this.r == ((Circle)obj).r  ) {
			return true;
		}
		else {
			return false;
		}
	}
	
	public String toString() {
		return r+"";
	}
}

public class Re0527 {
	public static void main(String[] args) {
		Circle a = new Circle(30);
		Circle b = new Circle(30);
		
		System.out.println("반지름: " +a);
		System.out.println("반지름: " +b);
		
		if(a.equals(b)) {
			System.out.println("같은 원");
		}
		else {
			System.out.println("다른 원");
		}
	}
}

 

 

 

 

 

 

  • 인터페이스 Po를 만들고 추상메서드 pr 을 만드시오. 상속받아 구현하시오.
main(){
	Po p = new Point();
    p.pr(30000, "java");
    p.pr("python");
}

/*
	실행결과) java책은 30000원
    		 python
*/

 

더보기
interface Po {
	public void pr(int a, String b);
	public void pr(String b);
}

class Point implements Po {
	public void pr(int a, String b) {
		System.out.println(b +"책은 "+a+"원");
	}
	public void pr(String b) {
		System.out.println(b);
	}
}

public class Re0527 {
	public static void main(String[] args) {
		Po p = new Point();
		p.pr(30000, "java");
		p.pr("python");
	}
}

 

 

 

 

 

참고

TCT School

 

728x90
728x90