목록Java (41)
코딩 기록들

자바의 예외 종류 Throwable (예외 최상위 클래스) | Exception (try~catch : 필수) -> 을 상속받은 예외들은 if로 처리할 수 없음 (컴파일 exception : 컴파일 할 때 예외 발생 여부 확인) -> 코드 쓸 때 예외가 반드시 처리 돼야함 (자바가 예외를 처리하는 방법을 완전히 분리시켜놨기 때문에, Exception만 상속받는 경우는 try~catch를 반드시 써주기) ex) IOE Exception / ClassNotFound Exception | RuntimeException (try~catch : 옵션) -> 을 상속받은 예외들은 if로 처리할 수 있음 (= 실행중 발생하는 예외) -> 실행 중 예외 '회피' 해줘야됨 ex) NullPointerException /..
- 프로그램이 동작하는 과정 중 잘못된 입력 값이 전달되거나 - 읽어야 하는 파일이 존재하지 않거나 (다음 파트 내용) - 배열의 인덱스를 잘못 전달했거나 - Null 인스턴스에 접근을 하려했거나 등등의 이유로 오류가 발생하는데, --> 이것을 “예외” 라고 함 --> 예외가 발생한경우 자바 프로그램은 JVM(실행중인 어플리케이션 죽여버림)에 의해 강제종료됨 - 예외처리 : 어플리케이션이 죽지않게 코드를 방어적으로 쓰는것 - 예외가 발생하더라도 프로그램이 종료되지 않도록 하는 방법이면서 + 예외가 발생하지 않도록 하는 방어코딩의 방법 (예외가 발생하더라도 jvm에서 강제종료 시키지 않고, 프로그래밍이 핸들링하도록 하게 하는것) * NullPointerException * String adress = nu..
자바의 추상화 1. 추상 클래스 2. 인터페이스 추상클래스 & 인터페이스 : 인스턴스 생성 불가능 (구현되지 않은 메소드가 있기 때문) -> 추상클래스 : extends (상속받아서) 구현 / 인터페이스 : implements 구현 -> 구현 이후 클래스로 만들어줘야 -> 인스턴스 생성할수 있게 됨 3. 익명클래스 : 한번 쓰고 안쓸것들을 만드는 용도 익명클래스 - 추상클래스, 인터페이스를 강제로 인스턴스화 시키는 방법 - 사용하는 이유 : 한번쓰고 안쓸건데, 클래스 복잡하게 만들기 싫어서 - 언제쓰면 좋을까? : 단 한번 사용할 인스턴스 만들 때 사용 - 이름이 없는 객체를 말함 -> 단독으로 생성할 수 없고 클래스 상속하거나 인터페이스 구현해야만 생성할수있다 순서 1. 익명 자식 객체 생성 방법1) ..
추상화 - 추상의 사전적 의미 : 여러가지 사물이나 개념에서 공통되는 특성이나 속성따위를 추출하여 파악하는 작용 + 사물을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출 & 파악하는것 (=클래스), 그 때 다른 성질을 배제하는 작용인 사상을 수반하므로 추상과 사상은 동일작용의 두 측면을 형성함 ex) 여러것들을 가져와서 다른것, 같은것을 뽑아내어 따로 정리해서 빼놓음 -> 공통된것들은 써두고(추상클래스), 다른것들은 어떻게 쓰일지 모르니 비워둠 (실무에서는 추상클래스 잘 쓰지 않는다) 추상클래스 - 어떤기능의 공통부분은 모두 구현해놓고(추상), 다른부분들만 구현하지 않은 (사상)메소드가 있는 클래스 구현하지 않은 메소드= abstract method 구현하지 않은 클래스 = abstract class..
다형성(Polymorphism) 객체지향프로그래밍의 4가지 특징 중 하나 1. 캡슐화 - 여러 기능을 메소드(캡슐)로 묶어 처리한다. 2. 추상화 - 기능의 정의만 존재하고 구현은 하지 않는다 3. 다형성 - 상속 및 구현 대상(부모클래스) 타입에 포함되는 것을 허가한다. (=IS A 관계가 허용된다) - 즉, 하나의 타입으로 여러가지 타입을 표현할 수 있다. 4. 상속 - 부모클래스의 모든 속성, 기능을 확장한다. ++ 정보은닉 (멤버변수를 보호시킴) 다형성을 구현하기 위해서는 : 1. 메소드 재정의 , 2. 타입변환 이 필요함 자동타입변환 - 프로그램 실행 도중 자동으로 타입변환이 일어나는것 [ 자동타입변환의 조건 ] 부모타입변수 = 자식타입; - ex) Animal 부모클래스, cat 자식클래스(A..

상속 - Inheritance : 상속/계승 / "확장" - A클래스를 상속(계승)해 B클래스를 만드는것 - Java에서 상속은 extends로 표현함 - 상속을 사용하는 예 : 하나의 클래스를 확장해 다양한 클래스를 만들어내기 위함 (멤버변수 혹은 인스턴스 메소드 추가) package vending_machine_explain; /** * 자판기에서 판매할 상품의 정보 (데이터클래스) */ public class Product { /** * 상품의 이름 */ String name; // 정보안주면 null 할당됨 /** * 상품의 가격 */ int price; // 정보안주면 0 할당됨 /** * 상품의 재고 (수량 관리 위함) */ int quantity; public String getName() ..
자바에서 작성하는 변수나 메소드, 클래스, 인스턴스, 생성자 등은 유일한 이름으로 구분해야함 ( 변수 중복선언, 메소드 중복선언은 할수없음) 만약, 강제로 선언하면 아래와같은 에러발생 Duplicate field 클래스명.변수명 Duplicate method 메소드명() in type 클래스명 단, 메소드 오버로딩 기법으로 동일한 이름의 메소드를 정의하고 사용할 수 있음 메소드오버로딩 - 같은이름의 메소드를 여러개 만들 수 있음) - 클래스 내에 같은 이름의 메소드를 여러개 선언하는 것 기준 : 1. 메소드 명 동일, 2. 파라미터의 개수 / 파라미터의 타입 / 순서 중 하나가 달라야 함 (리턴타입은 무관) 생성자 오버로딩 - 생성자도 메소드이기 때문에 오버로딩이 가능함 - 매개변수를 달리하는 생성자를 ..

- 같은 타입의 많은 양의 데이터를 다뤄야 할 경우 사용 - 동일한 타입의 값들을 메모리에 차례대로 나열시킨 구조 - 같은 타입의 데이터만 저장할 수 있음 - 선언과 동시에 저장할 수 있는 데이터 타입이 결정됨 - 한번 생성된 배열은 길이를 늘이거나 줄일 수 없음 1. 배열 선언 방법1) type[] 변수; ex) int[] intArray; 방법2) type 변수 []; ex) int intArray[]; - 배열변수는 참조변수에 속함 -> 참조할 배열객체가 없다면 배열변수는 null로 초기화됨 --> 하지만, 만약 null 인 상태에서 변수[인덱스]로 값을 읽거나 저장하면 NullPointerException발생함 (-> 배열변수는 배열을 생성하고 참조하는 상태에서 값을 저장하거나 읽어야함) 2.1 ..