분류 전체보기(14)
-
10. 예외처리와 enum
예외(Exception )처리 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것 목적 : 예외 발생으로 인한 실행중인 프로그램의 갑작스런 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 *컴파일 에러 컴파일 단계에서 발견하여 컴파일러가 에러 메시지 출력 ex) 문법 구문 오류 *런타임 에러 컴파일에는 문제가 없더라도 실행시 발생하는 에러 오류(Error)와 예외(Exception)이 있다. 오류와 예외 Error(오류) : 수습할 수 없는 심각한 오류 ex) 메모리 부족, 스택오버플로우 등 발생하여 프로그램이 죽는것은 프로그래머가 제어할 수 없음. Exception(예외) 예외 처리를 통해 수습할 수 있는 덜 심각한 오류 예외 종류 1) RuntimeExcept..
2023.09.10 -
9. 컬렉션 프레임 워크와 제네릭
제네릭 (Generic) 클래스나 메소드에 사용할 데이터 타입을 여러 참조 자료형을 사용할 수 있도록 하는 것 1) 제네릭을 사용하지 않았을 때 여러 참조 자료형을 사용할 수 있도록 Object 클래스를 사용한다. public class ObjectBox { private Object object; //object만 들어올 수 있는게 아니라 object의 후손들 모두 들어올 수 있다 //ObjectBox는 어떤 Object든 저장할 수 있고, 어떤 Object든 꺼낼 수 있다. public void add(Object obj){ this.object = obj; } public Object get() { return this.object; } public void set(Object obj) { this..
2023.09.04 -
8. 익명 클래스와 람다식
익명 클래스 (Anonymous Class) - 이름이 없는 클래스 - 이름이 기억되지 않아도 되고, 나중에 다시 불러지지 않는다는 의미를 내포 => 한번만 사용되고 버려지는 객체 - new 생성자() { ... } : 생성자 뒤에 중괄호가 나오고 코드를 오버라이딩하여 보통 구현 package com.example; public class CarExam { public static void main(String[] args) { //Car는 상속받고 싶은데 클래스는 만들고 싶지 않은 경우 //익명 클래스 : Car를 상속받고 있는 이름없는 객체의 인스턴스가 만들어진다. Car c = new Car() { @Override public void a() { System.out.println("이름없는 객체의..
2023.09.04 -
7. 자바 리플렉션 (Reflection)
리플렉션(Reflection)이란? 구체적인 클래스 타입을 알지 못하더라도 클래스의 메소드, 타입, 변수에 대한 정보를 알아낼 수 있다. 컴파일 시간이 아닌 실행 시간에 동적으로 특정 클래스의 정보를 추출할 수 있는 기법 * 언제 리플렉션을 사용할까? 동적으로 클래스를 사용해야 할 때 작성 시점에는 어떤 클래스를 사용해야할 지 모르지만 런타임 시점에서 클래스를 가져와 실행해야 하는 경우 필요하다. *리플렉션을 사용하여 가져올 수 있는 정보 Class Constructor Method Field ex) Class public class ClassLoaderMain { public static void main(String[] args) throws Exception{ //1. 클래스를 알고 있을 때 Cla..
2023.09.04 -
6. 불변 객체 (Immutable Object) & Final
불변 객체 (Immutable Object) 객체 생성 후 내부의 상태를 바꿀 수 없는 객체 & 생성된 객체가 내부 상태를 변경할 수 없게 만들어진 객체 대표적인 불변 객체 : String String str ="a"; //(1) str = "b"; //(2) str = "c"; //(3) (1) heap영역에 str을 참조하는 "a"라는 String객체가 생성 (2) "a"객체가 "b" 값으로 변하는 것이 아니라 "b"라는 새로운 객체가 생성되고, str은 "b" 객체를 바라본다. (3) (2)와 마찬가지로 "c" 객체가 새로 생성, str은 "c"를 바라본다. 불변 객체의 장점 1. 객체에 대한 신뢰도 높아짐 생성된 객체의 내부가 변하지 않음 2. Thread-Safe 동기화 문제가 발생하는 이유는 ..
2023.09.03 -
5. 추상클래스와 인터페이스
추상 클래스 - abstract 키워드를 포함하며, 하나 이상의 추상 메소드를 가진 클래스 public abstract class Class { public abstract void abstractMethod(); } 추상 메소드가 포함된 클래스는 반드시 추상 클래스가 된다. 추상 메소드는 상속을 통해 자식 클래스에서 반드시 구현되어야 한다. 추상 클래스는 상속을 위한 클래스이므로 인스턴스화 될 수 없다. 추상 클래스를 상속 받는 자식 클래스가 인스턴스가 된다. 추상 메소드란, 메소드가 구현되지 않고 선언만 되어있는 메소드로 상속받는 클래스에 따라 구현부가 달라진다. 인터페이스 - inaterface 키워드를 포함하며, 추상 메소드와 상수만을 가짐 (JDK 1.8부터 static 메소드와 default ..
2023.09.03