[Java] 내부 클래스와 익명 클래스
·
Java/Base
내부 클래스 (Inner class, 중첩 클래스)  - 클래스 내부에서 선언한 다른 클래스      → 해당 클래스를 감싸고 있는 '외부 클래스'와 밀접한 연관이 있는 경우가 많음  - 다른 외부 클래스에서 사용할 일이 없는 경우에는 내부 클래스로 선언하는 것을 고려할 수 있음      → 장점 : 내부 클래스에서 외부 클래스의 멤버 변수에 접근하기 쉬움                       (코드의 복잡성을 줄임) // 외부 클래스의 인스턴스화외부클래스 참조변수 = new 외부클래스();// 내부 클래스의 인스턴스화 (내부 클래스에 private 선언 시 사용 불가)외부클래스.내부클래스 참조변수 = 외부클래스.new 내부클래스(); #  인스턴스 내부 클래스  - 내부적으로 사용한 클래스 (priv..
[Java] 오류와 예외 처리
·
Java/Base
프로그램에서의 오류  ① 컴파일 오류 (Compile error)      - 프로그램 코드 작성 중 발생하는 문법적 오류    ② 실행 오류 (Runtime error)      - 실행 중인 프로그램이 의도하지 않은 bug를 만나거나, 프로그램이 중지되는 오류      - 비정상 종료를 일으켜 시스템의 심각한 장애를 유발할 수 있음 오류와 예외   ① 시스템 오류 (Error)      - 프로그래머가 처리할 수 없는, 시스템 레벨에서 발생하는 심각한 문제      - 대부분 JVM이나 하드웨어에서 발생함      ex) 동적 메모리가 없는 경우, 스택 메모리 오버 플로우 등   ② 예외 (Exception)      - 프로그램에서 제어할 수 있는 오류      - 언어의 안전성을 위해, 문법적으로..
[Java] Object 클래스
·
Java/Base
java.lang 패키지  - import 예약어를 사용해서 가져오지 않아도 자동으로 import되는 패키지  ex) String, System, Object, Exception, ... Object 클래스  - 모든 클래스의 최상위 클래스      → 모든 클래스는 Object 클래스에서 상속받음  (extends 키워드 생략)      → Object 클래스의 메서드 중 일부를 재정의해서 사용할 수 있음#  toString() 메서드  - (기본) 객체의 정보를 String 타입으로 바꿔 사용할 때 쓰임#  equals() 메서드  - (기본) 두 객체의 주소 값이 동일하면 true를 반환함  - (재정의) 주소 값이 다르더라도 두 객체가 논리적으로 동일하면 true를 반환함      ex) Stri..
[Java] 인터페이스 - DAO 구현
·
Java/Base
코드// DTO : Data Transfer Objectpublic class UserInfo { public static int SERIAL_NUMBER = 0; private int id; private String userName; private String pw; public UserInfo(String name, String pw) { SERIAL_NUMBER++; this.id = SERIAL_NUMBER; this.userName = name; this.pw = pw; } public int getId() { return id; } public String getUserName() ..
[Java] 인터페이스와 default 메서드
·
Java/Base
인터페이스 (Interface)  - 구현된 것이 아무 것도 없는, 밑그림만 있는 기본 설계도  - 기능 중심 설계      : 클래스/프로그램이 제공하는 기능을 명시적으로 선언함  - 표준      : 기능을 정의해두면, 어떤 클래스든 가져와서 사용할 수 있음  - 클라이언트 코드와의 약속 (강제성이 있는 약속)  - 클래스/프로그램이 제공하는 명세  - 구현하는 클래스가 어떤 메서드를 반드시 구현해야 하는지를 지시함      → 모든 클래스는 인터페이스의 모든 메서드를 구현해야 함  - 추상 클래스보다 추상화 정도가 더 높음 → 더 유연하게 코드 설계 가능#  인터페이스 정의  - 인터페이스는 멤버 변수를 가질 수 없고, 상수만을 가질 수 있음  - 인터페이스는 일반 메서드를 가질 수 없고, 추상 메..