Java35 자바 예외 처리 자바 컴파일러는 소스 파일을 컴파일할 때 일반 예외가 발생할 가능성이 있는 코드를 발견하면 컴파일 에러를 발생시켜 개발자가 강제적으로 예외 처리 코드를 작성하도록 요구한다. 그러나 실행 예외는 컴파일러가 체크해주지 않기 때문에 개발자의 경험을 바탕으로 예외 처리 코드를 작성해야 한다. 예외 처리 코드 try-catch-finally 블록은 생성자 내부와 메소드 내부에서 작성되어 일반 예외와 실행 예외가 발생할 경우 예외 처리를 할 수 있도록 해준다. try-catch-finally 블록은 아래와 같이 작성한다. try { // 예외 발생 가능 코드 작성 } catch(예외클래스 e) { // 예외 처리 코드 } finally { // 항상 실행하는 코드 } 1. try 블록에는 예외 발생 가능 코드가 위.. 2023. 6. 28. 자바 예외 클래스 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서는 에러와 비슷하다. 그러나 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 자바는 예외가 발생할 가능성이 높은 코드를 컴파일할 때 예외 처리 유무를 확인한다. 만약 예외 처리 코드가 없다면 컴파일이 되지 않는다. 하지만 모든 예외에 대해서 예외 처리 유무를 확인하는 것은 아니다. 예외와 예외 클래스 예외는 두 가지 종류가 있다. 하나는 일반 예외이고 다른 하나는 실행 예외이다. 일반 예외는 컴파일러 체크 예외라고도 하는데, 프로그램 실행 시 예외가 발생할 가능성이 높기 때문에 자바 소스를 컴파일하는 과정에서 해당.. 2023. 6. 28. 자바 익명 객체 익명 객체는 이름이 없는 객체를 말한다. 익명 객체를 만들려면 조건이 있다. 어떤 클래스를 상속하거나 인터페이스를 구현해야만 한다. 일반적인 경우에는 아래와 같이 명시적으로 클래스 이름을 주고 선언한다. [ 상속 ] class 클래스이름1 extends 부모 클래스 { ... } 부모 클래스 변수 = new 클래스이름1(); [ 구현 ] class 클래스이름2 implements 인터페이스 { ... } 인터페이스 변수 = new 클래스이름2(); 이 경우 클래스 변수는 클래스이름1의 객체를 참조하고, 인터페이스 변수는 클래스이름2의 객체를 참조한다. 그러나 익명 객체를 생성할 때에는 아래와 같이 클래스 이름이 없다. [ 상속 ] 부모클래스 변수 = new 부모클래스(){ ... } [ 구현 ] 인터페이.. 2023. 6. 27. 자바 중첩 클래스와 중첩 인터페이스 중첩 클래스란 클래스 내부에 선언한 클래스를 말한다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있고, 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다. 아래는 중첩 클래스의 코드 형태를 보여준다. class ClassName{ class NestedClassName{ // 중첩 클래스 } } 인터페이스도 클래스 내부에 선언할 수 있다. 이런 인터페이스를 중첩 인터페이스라고 한다. 인터페이스를 클래스 내부에 선언하는 이유는 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해서이다. class ClassName{ interface NetstedInterfaceName{ // 중첩 인터페이스 } } 중첩 클래스 중첩 클래스는 클래스 내부.. 2023. 6. 27. 자바 인터페이스 타입 변환과 다형성 프로그램을 개발할 때 인터페이스를 사용해서 메소드를 호출하도록 코딩했다면, 구현 객체를 매우 손쉽고 빠르게 교체할 수 있다. 프로그램 소스 코드는 변환이 없는데, 구현 객체를 교체함으로써 프로그램의 실행 결과가 다양해진다. 이것이 인터페이스의 다형성이다. 자동 타입 변환 구현 객체가 인터페이스 타입으로 변환되는 것은 자동 타입 변환에 해당된다. 자동 타입 변환은 프로그램 실행 도중 자동적으로 타입 변환이 일어나는 것을 말한다. 인터페이스 변수 = 구현 객체; 인터페이스 구현 클래스를 상속해서 자식 클래스를 만들었다면 자식 객체 역시 인터페이스 타입으로 자동 타입 변환할 수 있다. 자동 타입 변환을 이용하면 필드의 다형성과 매개 변수의 다형성을 구현할 수 있다. 필드와 매개 변수의 타입을 인터페이스로 선언.. 2023. 6. 27. 자바 인터페이스 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출 시킨다. 그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 된다. 여기서 개발 코드가 직접 객체의 메소드를 호출하지 않고 인터페이스를 중간에 두는 이유는 개발 코드를 수정하지 않고 사용하는 객체를 변경할 수 있도록 하기 위해서이다. 인터페이스는 하나의 객체가 아니라 여러 객체들과 사용 가능하므로 어떤 객체를 사용하느냐에 따라서 실행 내용과 리턴값이 다를 수 있다. 따라서 개발 코드 측면에서는 코드 변경 없이 실행 내용과 리턴값을 다양화할 수 있다는 장점을 가지게 된다. 인터페이스 선언 인터페이스는 '~.java' 형태.. 2023. 6. 27. 자바 추상 클래스 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스 라고 한다. 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있다. 추상 클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 특성을 가질 수 있다. 여기서 특성이란 필드와 메소드들을 말한다. 예를 들어 Bird class, Insect class, Fish class 등의 실체 클래스들에서 공통되는 필드와 메소드들을 따로 선언한 Animal class 를 만들 수 있는데 이것이 바로 추상 클래스이다. 추상 클래스의 용도 실체 클래스의 공통적인 특성(필드, 메소드)을 뽑아내어 추상 클래스로 만드는 이유는 아래와 같이 두가.. 2023. 6. 27. 자바 클래스 타입 변환과 다형성 다형성은 사용 방법은 동일하지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 성질이다. 예를 들어 자동차가 타이어를 사용하는 방법은 동일하지만 어떤 타이어를 사용(장착)하느냐에 따라 주행 성능이 달라질 수 있다. 다형 성을 구현하려면 메소드 재정의와 타입 변환이 필요하다. 자동 타입 변환 타입 변환이란 타입을 다른 타입으로 변환하는 행위를 말한다. 기본 타입의 변환과 마찬가지로 클래스도 타입 변환이 있다. 클래스의 변환은 상속 관계에 있는 클래스 사이에서 발생 한다. 자식은 부모 타입으로 자동 타입 변환이 가능하다. 자동 타입 변환은 프로그램 실행 도중 자동적으로 타입 변환이 일어나는 것을 말한다. 자동 타입 변환은 아래와 같은 조건에서 일어난다. 부모타입 변수 = 자식타입; 자동 타입 변환의.. 2023. 6. 26. 자바 상속 상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여준다. 예를 들어 field1, field2, method1(), method2()를 가지는 클래스를 작성한다고 가정을 해봤을 때 filed1과 method1()을 가지고 있는 클래스가 있다면, 4개를 모두 처음부터 작성하는 것보다는 클래스를 상속하고, filed2 와 method2()만 추가 작성하는 곳이 보다 효울적이고 개발 시간을 절약해준다. 상속을 이용하면 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져오기 때문에 유지 보수 시간을 최소화 할 수 있다. 클래스 상속 현실에서 상속은 부모가 자식을 선택해서 물려주지만, 프로그램에서는 자식이 부모를 선택한다. 자식 클래스를 선언할 때 어떤 부.. 2023. 6. 26. 이전 1 2 3 4 다음