Java 34

예외

예외란 잘못된 사용 또는 코딩으로 인한 오류를 말한다. 예외가 발생하면 프로그램은 종료된다는 점에서 에러와 동일하지만, 예외처리를 하면 프로그램이 종료되지 않고 실행상태를 유지할 수 있다. 예외에는 두가지가 있다.- 일반 예외 (Exception)컴파일러가 예외 처리 코드 여부를 검사하는 예외- 실행 예외 (Runtime Exception)컴파일러가 예외 처리 코드 여부를 검사하지 않는 예외 자바는 예외가 발생하면 예외 클래스로부터 객체를 생성한다. 이 객체는 예외 처리 시 사용된다. 자바의 모든 에러와 예외 클래스는 Throwable을 상속받아 만들어지고, 추가적으로 예외 클래스는 java.lang.Exception 클래스를상속받는다. 실행 예외는 RuntimeException과 그 자식 클래스에 해당..

Java 2024.07.09

익명 객체

이름이 없는 객체를 익명객체라 한다. 명시적으로 클래스를 선언하지 않기 때문에 쉽게 객체를 생성할 수 있다.익명객체는 필드값, 로컬 변수값, 매개변수값으로 주로 사용된다. 익명 객체는 클래스를 상속하고나 인터페이스를 구현해야만 생성할 수 있다.상속시에 익명 상속 객체, 구현시에 익명 구현 객체라고 한다. 익명 자식객체new 부모생성자(매개값) { //필드 //메소드} 익명 자식 객체는 위와 같이 생성된다. 생성된 객체는 부모타입의 필드, 로컬변수, 매개변수 값으로 대입할 수 있다.블록 안은 익명 자식 객체가 가져야 할 멤버이다. 부모타입의 멤버만 접근할 수 있기때문에 오버라이딩되는 코드가 작성된다. package ch09.sec07.ex01;public class Car { // 필드에 Tir..

Java 2024.07.06

중첩 인터페이스

중첩 인터페이스는 클래스의 멤버로 선언된 인터페이스를 말한다.인터페이스를 클래스 내부에서 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현객체를 만들기 위함이다. 중첩 인터페이스는 암시적으로 static이므로 static을 생략해도 항상 객체 없이 인터페이스를 사용할 수 있다. 중첩 인터페이스는 안드로이드와 같은 UI 프로그램에서 이벤트를 처리할 목적으로 많이 활용된다.예를 들어 버튼을 클릭했을 때 이벤트를 처리할 객체는 중첩 인터페이스를 구현해서 만든다. package ch09.sec06.ex01;public class Button { // 정적 중첩 인터페이스 public static interface ClickListener { // 추상 메서드 void o..

Java 2024.07.06

로컬 클래스 / 바깥 클래스

로컬 클래스생성자 또는 메소드 내부에서 선언된 클래스를 로컬 클래스라고 한다.package ch09.sec04.ex01;public class A { A() { // 로컬 클래스 선언 class B { } // 로컬 객체 생성 B b = new B(); } void method() { // 로컬 클래스 선언 class B { } // 로컬 객체 생성 B b = new B(); }} 로컬 클래스 B 내부에는 일반 클래스와 같이 필드, 생성자, 메소드 선언이 올 수 있다.정적 필드와 메소드는 java 17부터 사용가능하니 참고 로컬 변수(생성자 또는..

Java 2024.07.06

중첩 클래스 / 인스턴스 멤버 클래스 / 정적 멤버 클래스

중첩클래스 중첩클래스란 클래스 내부에 선언하는 클래스이다. 중첩클래스의 장점- 클래스의 멤버를 쉽게 사용할 수 있음- 외부에 중첩 관계를 감춤으로써 코드 복잡성을 줄일 수 있음 중첩클래스를 선언하는 위치는 두가지로 분류된다. 1. 멤버 클래스- 인스턴스 멤버 클래스- 정적 멤버 클래스선언 위치에 따른 분류선언 위치객체 생성 조건멤버 클래스인스턴스 멤버 클래스class A {    class B {..}}A 객체를 생성해야만 B 객체 생성 가능정적 멤버 클래스class A{    static class B{...}}A 객체 생성없이B 객체 생성 가능로컬 클래스class A{    void method() {        class B {....}    }}method가 실행할 때만B 객체 생성 가능 중첩 ..

Java 2024.07.05

싱글톤

애플리케이션 전체에서 단 한개의 객체만 생성해서 사용하고 싶다면 싱글톤 패턴을 적용할 수 있다.싱글톤 패턴의 핵심은 생성자를 private로 선언해 외부에서 new 연산자로 생성자를 호출할 수 없게 하는 것이다.생성자를 호출할 수 없으니 외부에서 객체를 생성하는 것이 불가능해진다. 대신 싱글톤 패턴이 제공하는 정적 메서드를 통해간접적으로 객체를 생성할 수 있다.package ch06.sec15;public class Singleton { // private 접근 권한을 갖는 정적 필드 선언과 초기화 private static Singleton singleton = new Singleton(); // **1번** // private 접근 권한을 갖는 생성자 선언 private Sing..

Java 2024.06.23

Getter / Setter

Setter객체의 필드를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있다.예를 들어 자동차의 속력은 음수가 될 수 없는데 외부에서 음수로 변경하면 객체의 무결성이 깨지게 된다. 이러한 문제점 때문에 직접적인 외부에서의 필드 접근을 막고, 그 대신 메소드를 통해 필드에 접근하는것을 선호한다.메소드가 데이터를 검증해서 유효한 값만 필드에 저장할 수 있기 때문이다. 이러한 역할을 하는게 Setter 이다. 요약: Java에서 Setter를 사용하면 private 필드에 접근하고 값을 설정할 수 있다. 이 때 유효성 검사를 수행할 수 있다.Setter의 장점1. 정보 은닉: private필드에 직접 접근할 수 없도록 해 객체 내부 상태를 보호2. 유효성 검사: Setter 메서드 내부에서 필드..

Java 2024.06.23

이것이 자바다 - 클래스(2)

리턴 타입 - 리턴 타입은 메소드가 실행한 후 호출한 곳으로 전달하는 결과값의 타입을 말한다.- 리턴값이 없는 메소드는 void로 작성한다.- 리턴 타입이 있는 메소드는 실행 블록 안에서 return 문으로 리턴값을 반드시 지정해야 한다. 매개변수- 매개변수는 메소드를 호출할 때 전달한 매개값을 받기 위해 사용된다.- 전달할 매개값이 없다면 매개변수는 생략할 수 있다. 메소드 호출메소드를 호출한다는 것은 메소드 블록을 실행하는 것을 말한다. 클래스에서 메소드를 선언했다고 바로 호출할 수 있는것은 아니다.메소드는 객체의 동작이므로 객체가 존재하니 않으면 메소드를 호출할 수 없다.클래스로부터 객체가 생성된 후에 메소드는 생성자와 다른 메소드 내부에서 호출될 수 있고, 객체 외부에서도 호출이 가능하다. 가변길..

Java 2024.06.21

이것이 자바다 - 클래스

클래스부분 복습내용객체란?- 객체는 속성과 동적으로 구성된다. 속성(필드), 동작(메서드)ex) 사람은 이름, 나이의 속성 / 걷다, 웃다의 동작 객체 간의 관계- 객체는 단독으로 존재할 수 있지만, 대부분 다른 객체와 관계를 맺고있다.- 집합 관계, 사용 관계, 상속 관계가 있다.(김영한 강의에서 배웠던 클라이언트, 인터페이스, 구현체등을 생각해보자  캡슐화객체의 데이터, 동작을 하나로 묶고 실제 구현내용을 외부에 감추는것외부의 잘못된 사용으로 객체가 손상되지 않기 하게 위해 사용하는 것  클래스의 두가지 용도- 라이브러리 (Library) 클래스 : 실행할 수 없으며 다른 클래스에서 사용하는 클래스- 실행 클래스 : main( ) 메서드를 가지고 있는 실행 가능한 클래스(Student 실행 클래스는 ..

Java 2024.06.19