
예외(Exception) 처리하기 프로그램의 실행 도중에 발생하는 에러는 어쩔 수 없지만, 예외는 프로그래머가 이에 대한 처리를 미리 해줘야 한다. 예외처리(Exception Handling)란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것이다. 또한 예외처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것이다. 발생한 예외를 처리하지 못하면, 프로그램은 비정상적으로 종료되며, 처리되지 못한 예외는 JVM의 '예외처리기(UncaughtExceptionHandler)'가 받아서 예외의 원인을 화면에 출력한다. try - catch 문 예외를 처리하기 위해서는 try-catch문을 사용한다. t..

예외(Exception)와 에러(Error) 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 논리적 에러(Login Error) 위에서 논리적 에러란 실행은 되지만, 의도와 다르게 동작하는 것이라고 했다. 이게 무슨 말일까? 한마디로 '버그'이다. 예를 들어 창고의 재고가 음수가 된다던가, 게임 프로그램에서 총알을 맞아도 죽지 않는 경우를 생각하면 된다. 실제로 롤(LOL)을 플레이하면서 여러가지 버그를 본 적이 있을 것이다. 왜 개발자들은 이를 진작에 막..

익명 클래스(Anonymous class) 익명클래스는 특이하게도 다른 내부 클래스들과 달리 이름이 없다. 클래스의 선언과 객체의 생성을 동시에 하기 때문이다. 즉, 단 한번만 사용될 수 있고 오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다. new 조상클래스이름() { // 멤버 선언 } OR new 구현인터페이스이름() { // 멤버 선언 } 이름이 없기 때문에 생성자도 가질 수 없으며, 조상클래스의 이름이나 구현하고자 하는 인터페이스의 이름을 사용해서 정의하기 때문에 하나의 클래스로 상속받는 동시에 인터페이스를 구현하거나 둘 이상의 인터페이스를 구현할 수 없다. 오로지 단 하나의 클래스를 상속받거나 단 하나의 인터페이스만을 구현할 수 있다. 정리하자면, 익명 클래스는 재사용할 필요가 없는 일..

내부 클래스(inner class) 내부 클래스는 주로 AWT나 Swing과 같은 GUI 어플리케이션의 이벤트 처리 외에는 잘 사용하지 않을 정도로 사용 빈도가 높지 않다. 그래도 기본 원리와 특징을 이해하는 정도까지는 학습을 해야한다. 내부 클래스란? 내부 클래스는 클래스 내에 선언된 클래스이다. 클래스에 다른 클래스를 선언하는 이유는 간단하다. 두 클래스가 서로 긴밀한 관계에 있기 때문이다. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점을 얻을 수 있다. 내부 클래스의 장점 - 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다. - 코드의 복잡성을 줄일..

인터페이스(Interface) vs 추상클래스(Abstract Class) 인터페이스와 추상클래스는 비슷하면서도 다르다. 실 업무에서도 많이 사용하는 개념이다보니 꼭 익히고 넘어가자 덧붙이자면 면접에서도 많이 묻는 질문 중 하나이다. Ex) 인터페이스에 대해서 설명하라, 인터페이스와 추상클래스의 차이점은? 등.. 추상 클래스 인터페이스 키워드 abstract interface 변수 제한 없음 static final(상수) 접근제어자 제한 없음(public, private, protected, default) public 사용 가능 메소드 제한 없음 abstract method, default method, static method, private method 키워드 extends implements 다중..

인터페이스(Interface) 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가질 수 있다. 하지만 클래스를 이용해 다중 상속을 할 경우 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통해서 다중 상속은 할 수 없다! 하지만 다중 상속의 이점을 버릴 수 없기에 인터페이스를 통해 다중 상속을 지원하고 있다. 인터페이스(Interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 인터페이스(Interface)는 오로지 추상 메소드와 상수만을 포함할 수 있다! 이 부분이 추상 클래스와 차이가 나는데, 그 부분은 다음 게시글로 정리할 예정..

추상클래스(abstract class) 추상 클래스를 처음 접하면 무엇을 추상화한다는 것인가? 추상? 애매한 이건 뭐지?? 라는 생각이 들 것이다. 먼저 추상의 사전적 정의는 아래와 같다. 추상 - 여러가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용 객체지향의 4가지 특징 중에 '추상화' 라는 것을 다룬 적이 있다. [JAVA] 자바란? JVM이란? 객체지향(특징,장단점)이란? 서론 20살 대학교때 배웠던 이 개념을 면접에서 처음 맞닥뜨렸을 때 머리로는 그려졌지만 입으로는 쉽게 뱉어지지 않았다. 내가 사용하는 것이 무엇인지, 어떤 장점이 있는지 확실하게 정리하고 y-it.tistory.com 이 '추상화'를 클래스에 접목시킨 것이 바로 추상클래스이다. 추상클래스는 클래스에 추..

다형성 다형성은 상속과 함께 객체지향개념의 중요한 특징 중의 하나이다! 상속과 깊은 관계가 있으므로 아래 글에서 상속 부분을 봐주시면 감사하겠다 ㅎㅎ... [JAVA] 객체지향 클래스(OOP) 총 정리(2) 상속(inheritance) 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 예시를 보며 이해해보자 class Parent { // } class Child extends Parent{ // } 위의 소스에서 Parent클래스는 부모클 y-it.tistory.com 다형성(polymorphism)이란 하나의 객체가 여러 가티 타입을 가질 수 있는 것을 의미한다. 자바에선 대표적으로 오버로딩, 오버라이딩, 업캐스팅, 다운캐스팅, 인터페이스, 추상메서드, 추상클래스 방법이 모두 다..

상속(inheritance) 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 예시를 보며 이해해보자 class Parent { // } class Child extends Parent{ // } 위의 소스에서 Parent클래스는 부모클래스가 되고, Child클래스는 부모클래스 Parent를 상속받은 자식클래스이다. 이 두 클래스는 서로 상속 관계에 있다고 한다. ✔︎ 조상 클래스 : 부모(Parent)클래스, 상위(super)클래스, 기반(base)클래스 ✔︎ 자손 클래스 : 자식(child)클래스, 하위(sub)클래스, 파생된(derived)클래스 그러면 이런 상속을 왜하는가? 상속을 이용하면 다음과 같은 장점을 얻을 수 있다. ✔︎ 클래스 간의 관계 형성을 명시해 줌으로써 코드..

클래스(class) 클래스(class)란 '객체를 정의해놓은 것' 또는 '객체의 설계도 또는 틀'이라고 정의할 수 있다. 객체(object)란 '클래스를 기반으로 선언된 대상'이라고 할 수 있다. 클래스와 객체의 관계를 실생활에서 예를 들면, 제품 설계도와 제품의 관계라고 할 수 있다. 클래스 객체 제품 설계도 제품 TV 설계도 TV 그럼 이런 생각이 들 수 있다. '제품을 바로 만들지 왜 설계도를 먼저 만들어?' 그 이유는 하나의 설계도만 잘 만들어놓으면 제품을 만드는 일이 쉬워진다. 만들 때마다 고민할 필요없이 설계도대로만 만들면 되기 때문이다! 이와 마찬가지로 클래스를 한번만 잘 만들어 놓기만 하면, 매번 객체를 생성할 때마다 어떻게 객체를 만들어야 할지를 고민하지 않아도 된다. 객체와 인스턴스 클..