Practice/알고리즘

[알고리즘] 0328 퀴즈 / Set Map / 예외

요모조묘 2023. 3. 28. 16:14

A 클래스가 다음과 같이 정의되어 있다. 올바른 설명은?

public final A { }
1 객체를 생성할 수 없다.
2 A 클래스를 상속받는 다른 클래스를 만들 수 없다.
3 final 멤버 변수만 가질 수 있다
4 A a = new A() 로 객체를 생성하면 a 변수에 다시 A객체를 생성할 수 없다.

 

- > final은 누구의 부모가 될 수 없다.

 

 

다음 중 인터페이스에 대한 설명으로 올바르지 않은 것을 고르시오.

1 하나의 클래스는 인터페이스를 여러 개 상속받아 구현할 수 있다.

2 인터페이스의 메서드의 접근제한자는 public으로 선언된다.

3 인터페이스는 다른 인터페이스를 상속받을 때 extends 를 사용한다.

4 인터페이스는 default method를 한 개만 가질 수 있다.

 


Set

.add  →  hashCode()  →  같다 →  equals  →  true  (이면 중복이므로 추가 안함)

 

Map

Map <K,V> : key는 중복안되고 value는 중복가능하다

                     구현객체 : HashMap, Hashtable, TreeMap, Properties ...

 

Set <Map.Entry<K,V>> entrySet() 

 

 

 

class Test {   //OuterClass

      필드, 메소드

      class A  extends WindowAdapter implements Xxx{   //InnerClass

              outer 쪽의 모든 필드와 메소드를 자유롭게 접근가능

     }

}

이너 클래스 : 재사용성이 떨어진다 (아우터 먼저 불러야함)
하지만 outer 쪽의 모든 필드와 메소드를 자유롭게 접근가능!

 


🔔 싱글톤패턴 클래스 

 

public class Test{ 

       private static Test instance = new Test();

 

      private Test() {   //외부에서 사용자 직접생성하지 못하도록 한다.

      }

 

      //현재객체를 생성해서 리턴하는 메소드를 만든다.

      public static Test getInstance( ){

             Test t = new Test();     //자기안에 private생성자 호출가능 O

              return t ;

             return instance;

      }

 

}

 

new Test () ;  // 자동으로 기본생성자 삽입

        →  error : private 생성자이므로 외부에서 객체 생성안됨

 

//3개의 주소는 모두 다르다. 다 다른 객체이다.

Test t1 = Test.getInstance();

Test t2 = Test.getInstance();

Test t3 = Test.getInstance();

 

🔔 메소드에 접근하는 법
1. 같은 클래스냐 ?
2. static이냐 ?
3. 객체 생성하자

 

💥이미 개발을 했던 사람들이 좀 더 좋은(유지보수, 확장성) 디자인패턴을 상황에 맞게 사용하자

 


🔔 예외처리 - Exception

 : 종류

  1.  체크 예외 - 컴파일에 오류 발생 (반드시 예외처리 필수)
  2. 비체크 예외 - 실행도중 발생하는 예외로 처리는 선택   RuntimeException

: 처리 방법

  •  직접 처리 - try catch
  • 던지기 (위임) - throws  ->메소드 선언부 작성
    • 메소드를 호출한 주체에게 예외를 위임하는 것.
    • (던져서 위임하는) 이유 : 하나의 기능의 서비스가 동작할때 각 상황에 따른 예외를 하나의 영역에서 한번에 처리하는 것
                                             메소드를 호출하는 주체가 예외처리를 직접할 수 있도록 정보를 제공!

 

직접 처리 방법

try{ 

      발생가능성이 있는 코드 작성 ; 

     1)

     2)

     3)

     4)

} catch(XxxException e){   //catch 여러개 작성할때는 반드시 서브클래스부터 작성해야한다!!!

         예외가 발생했을 때 해야하는 일 작성

}catch(XxxException e){ 

         예외가 발생했을 때 해야하는 일 작성

}catch(XxxException e){ 

         예외가 발생했을 때 해야하는 일 작성

}...finally {

        예외 발생 여부와 상관없이 무조건 실행해야하는 일 작성

}

 

* catch 또는 finally블럭은 반드시 try와 함께 사용

ex ) 

      try {

      }finally{

      }

 ___________________

      try {

      }catch(XxxException e) {

      }

____________________

 


IO

1. 생성

2. 읽기 or 쓰기

3. 닫기

 

JDBC

1. 로드 

2. 연결

3. 실행

4. 닫기

- 강제로 예외를 발생시킨다.

   throw 발생할 예외객체;

           *발생할 예외객체를 어떤 클래스를 할 것인가?

            1)반드시 예외처리 할거니?               -> Exception

            2)예외처리를 선택할거니? ->RunTimeException

 

던지기 - 직접처리
던지기 - 위임

 

 

MVC 구조

* 사용자정의 Exception class를 만들 수 있다.

class XxxException extends XxxException {  //체크예외

        XxxException() {

             super("기본메세지 작성");

       }

        XxxException(String message) {

             super(message);

       }

 

}

class XxxException extends XxxException {  //비체크

      

}

new XxxException();

new XxxException("쉬고싶다");