자바 예외 총정리예외란?사용자의 잘못된 조작 혹은 개발자의 로직 실수로 인해서 발생하는 프로그램 오류를 말한다. 예외처리 코드를 통해서 프로그램을 종료하지 않고 다시 정살 실행 상태가 유지 되도록 할 수 있다.예외 vs 에러에러(error)란 자바 프로그램 밖에서 발생한 오류를 뜻한다. 컴퓨터가 고장이 난다거나. OS에서 비정상적인 상황이 발생해서 JVM이 실행될 수 없는 경우등으로 복구가 불가능 하다.error : 프로세스에 영향을 줌exception : 스레드에만 영향을 줌예외 처리 방법예외 복구 : 상황 파악 후 문제 해결해서 정상 상태로 돌려놓는 방법예외 회피 : throws를 통해서 직접 처리 안하고 호출한 쪽으로 던져 회피예외 전환 : 회피와 비슷하지만 그냥 던지지 않고 적합한 의미를 가진 예..
Package-privaet 접근 제한자 자바에서 대부분의 클래스는 외부에서 사용하기 위해서 만드는 경우가 많다. 클래스를 설계할 때 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버를 구분해서 필드, 생성자, 메서드를 설계하는 것이 바람직하다. 이때 누군가는 호출을 어디까지 허용할 건지 만드는 것이 접근 제한자이다. 접근 제한자의 종류와 적용할 대상은 다음 표와 같다. 접근 제한 적용 대상 접근할 수 없는 클래스 public 클래스, 필드, 생성자, 메소드 없음 protected 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스 default 클래스, 필드, 생성자, 메소드 다른 패키지에 소속된 클래스 private 필드, 생성자, 메소드 모든 외부 클래스 이젠 클래스,..
abstract는 추상이라는 개념이다. 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 추상 클래스는 클래스들의 공통적인 특성을 추출해서 선언한 클래스이다. 예를 들어서 생물의 특징을 적는 class들이 있다고하자. Bird, Insect, Fish등이 있을 때 이들의 공통되는 필드와 메소드를 모아둔 것이 추상 클래스이다. 여기서는 Animal.class라고 하자 이때 Animal 클래스를 Bird, Insect, Fish들이 상속하게 된다. Animal animal = new Animal(); 추상 클래스인 Animal은 다음과 같이 new연산자를 사용해서 인스턴스를 생성할 수 없다. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적으로 사용 실체 클래스를 작성할 때 시간을 절..
Overloading이란 같은이름의 맴버들을 작성하는 걸 뜻한다. 매개변수등이 달라져도 같은 동작을 하는 맴버들을 만들기 위해서 사용한다. 메소드 오버로딩 생성자 오버로딩 2가지가 있다. Overriding은 부모 클래스의 메소드가 자식 클래스에 맞지 않아서 재정의 하는 것을 의미한다. 메소드 Overriding이 있다. 부모의 메소드와 동일한 이름, 변수리스트, 리턴타입을 가져야 한다. 접근 제한을 더 강하게 오버라이딩할 수 있다. 새로운 예외를 할 수 없다. 생성자 오버로딩 다양한 데이터를 사용해서 객체(class)를 생성하려면 생성자도 다양화 될 필요가 있다. 이때 Overloading을 사용하면 편리해진다. public class Person { private String name; private..
Static, Final이란? static이랑 final은 class의 필드(변수들) 이랑 메소드(함수들)을 선언할 때 사용한다. 둘은 맴버들(필드,메소드)들을 어떻겍 사용하는지에 대한 정의 권한이라고 생각하면 편하다. 그럼 2개를 나눠서 알아보자 Static static은 '고정된'이라는 의미를 가진 단어이다. 정적, static맴버는 클래스에 고정된 맴버로써 객체를 생성하지 않고 사용할수 있는 필드와 메소드를 뜻한다. 일반적으로 선언된 맴버들은 인스턴스 맴버라고 해서 사용을하려면 객체(class)를 생성하고 사용해야하지만 static맴버들은 클래스가 메모리로 로딩되기만 하면 .연산자를 사용해서 바로 접근할 수 있다. 예시코드 public class Calculator{ static double pi ..
Java의 Getter와 Setter에 대해서 알아보자 객체지향으로 프로그래밍을 하다보면 객체의 데이터는 외부에서 직접적으로 접근하는걸 막게된다. private double speed; 이런식으로 객체의 무결성이 깨질수도 있기 때문이다. 아래 예시를 한번 보자 Setter 예시 Mycar.speed = -50; 어떤 클래스에 이런 차의 속도를 저장하는 필드값이 있다고 할때, 속도는 음수가 될수 없음으로 메소드를 사용해서 제약조건을 걸수도 있다. void setSpeed(double speed){ if(speed < 0){ this.speed = 0; return; } else { this.speed = speed; } } 0이하의 속도는 0으로 만드는 set메소드를 만들었다 이것이 바로 Setter이다...