프로그램 실행 시 예외 발생에 의해 프로그램이 강제로 종료되지 않게끔 하는 방법이다.
try 문에는 실행중에 예외가 발생할 것으로 예상되는 코드를 작성한다. 예외가 발생했을때에는 catch 문에서 이 예외에 대한 처리를 진행한다.
finally 문에는 예외 발생과 상관없이 수행되어야 하는 코드를 작성하고, 이는 생략이 가능하다.
클래스에 대해서는 public과 default를 설정할 수 있다.
클래스의 멤버에 대해서는 public, protected, private, default 가 있다.
public - 프로젝트의 모든 곳에서 접근 가능하다.
default - 패키지 내에서 접근이 가능하다.
protected - 클래스 내부에서 접근 가능 + 상속받은 클래스에서 접근 가능
private - 클래스 내부에서만 접근 가능
==
와 equals
의 차이를 말해주세요.둘 다 객체의 비교를 진행하는 방법이다.
==
은 객체의 동일성을 비교하는 것으로 두 객체의 메모리 주소 값이 같은지를 확인 한다.
equals
는 객체의 동등성을 비교하는 것으로 두 객체의 값이 같은지를 비교한다.
예시로 두개의 String을 비교할 때 new
키워드로 생성한 두개의 객체를 ==
으로 비교하면, 두 String의 내용이 같더라도 다른 객체이므로 false
를 리턴한다.
반면 두 객체의 내용이 같다면 equals
를 통해 true
를 리턴 받을 수 있다.
if("String".equals(variable))
위와 같이 사용하여 NPE를 피한다.
if(variable.equals("String"))
이와 같이 사용하면 variable 이라는 변수가 null 일경우 NPE를 만나게 된다.
공통점
new
키워드를 통해 인스턴스 화 할 수 없다.추상클래스 특징
extends
키워드를 사용한다.인터페이스 특징
implements
키워드를 사용한다.S - 단일 책임 원칙 (Single Responsibility Principle) 으로 하나의 클래스는 하나의 책임만을 가져야 한다는 것이다.
O - 개방 폐쇄 원칙 (Open Closed Principle) 으로 확장에는 열려있고, 수정에는 닫혀있어야 한다는 것이다.
L - 리스코프 치환 원칙 (Liscov Substitution Principle) 으로 상속되는 객체는 반드시 부모 객체를 대신할 수 있어야 한다.
I - 인터페이스 분리 원칙 (Interface Segregation Principle) 으로 클라이언트를 기준으로 인터페이스를 분리해야 한다는 것이다.
D - 의존성 역전 원칙 (Dependency Injection Principle) 으로 구체적인 클래스 보다는 추상클래스, 인터페이스와 같이 상대적으로 변하지 않을 것 같은 클래스에 의존 할것을 권장하는 원칙이다.
오버라이딩은 상위 클래스의 메서드를 하위 클래스에서 재정의 하는 것을 말한다.
오버로딩은 메서드의 이름은 같지만 return 형과 매개변수가 다른 것을 의미한다.
Method, Stack, Heap 영역으로 구분 된다.
Method 영역에는 전역변수나 static 변수가 저장되며, JVM의 클래스 로딩 시점에 할당되어 프로그램 종료시 까지 유지된다.
Heap 영역에는 new 연산으로 생성된 객체가 런타임 시점에 할당된다.
Stack 영역에는 지역변수, 파라미터 등이 저장되고 컴파일 시점에 할당된다.