공부/Java

    자바 예외 처리, Checked Exception와 Unchecked Exception

    자바에서는 오류를 Error와 Exception으로 나누고 클래스로 구현하여 처리하도록 하였다. Error 클래스는 외부적인 요인으로 발생하는 오류이기 때문에 개발자가 대처할 수 없다.예외프로그램의 정상적인 실행을 방해하는 사건컴파일 에러 : 컴파일 시에 발생하는 에러런타임 에러 : 실행 시에 발생하는 에러논리적 에러 : 실행은 되지만 의도와 다르게 동작하는  예외 종류로 Checked Exception과 Unchecked Exception으로 나뉜다. 예외 처리 동작의 필수 지정 유무에 따라 나뉘기 때문이다. 유형 exUnchecked ExceoptionError프로그램 외부에서 발생한 예외H/W 또는 System 오동작IOError 예외 자동 발생Runtime-Exceoptionprogram logi..

    다형성 Polymorphism

    Bird Worm Cat cry() chirp() croak() ↓ 타입이 다른 객체들이 동일한 개념의 행위를 수행할 때, 같은 이름을 부여하고 다르게 행동하게 하는 것이 좋다. Bird Worm Cat cry() cry() cry() 다형성 타입이 다른 객체가 같은 이름, 다른 행동의 메소드를 사용할 수 있게 하는 동적 바인딩 과정 1. 슈퍼클래스에서 상위 개념 정의 public class Animal { void cry() {} } //abstract class, interface 모두 가능 2. 각 서브클래스에서 재정의/구현 public class Cat extends Animal{ @Override void cry() { System.out.println("야옹"); } } public class..

    자바 추상 클래스와 인터페이스

    추상클래스 -추상메소드 Abstract Method 선언부만 가지는 메소드 accessModifer 반환타입 메소드이름(매개변수) -추상클래스 적어도 하나의 추상메소드를 가지는 클래스 *객체 생성에 사용 불가 *상속에 이용 *참조 변수의 타입으로 사용 가능 인터페이스 public interface 인터페이스이름 [extends superinterface]{ 상수 abstract methods default methods - body 있음 static methods - body 있음 } accessModifer class 클래스 implements 인터페이스{ body } -구현 클래스는 인터페이스의 상수, default method, static method를 상속함 -abstract method를 구현..

    자바 상속 - 클래스 타입 변환

    타입 변환 기본적으로 up-casting만 가능, 필요시 자동 변환 됨. 자식 클래스는 부모 클래스 타입으로 사용될 수 있다. 자식 클래스는 기본적으로 부모 클래스의 모든 필드와 메서드 요소를 가지고 있기 때문에 자동 타입변환이 되어도 지장이 없다. 참조 변수 p의 선언 타입 참조변수 p의 실제 타입 참조 변수 선언에 사용된 타입, Animal 객체 생성에 사용된 클래스, Human 호출 가능한 메소드 집합을 결정 실제 호출될 클래스를 결정 p.eat() 호출 가능 p.eat() / Human의 eat()이 호출 됨 p.think() 호출 불가능 Human의 think() 호출하려면 (Human)p.think() 강제 타입 변환(Casting) 부모 타입을 자식 타입으로 변환하는 것. 자식 타입이 부모 ..

    자바 상속 - super, this 예제

    상속 한 클래스가 기존 클래스의 모든 member를 물려받는 것. (생성자는 멤버에 속하지 않음) - 클래스의 멤버 = 변수, 메소드, 중첩 클래스 선언 class 서브클래스 extends 슈퍼클래스 -모든 클래스는 오직 하나의 direct superclass를 가짐(단일 상속) -명시적으로 상속하지 않는 경우 최상위 클래스인 java.lang.Object가 슈퍼클래스 class 서브클래스 extends 슈퍼클래스{ -새로운 멤버 추가 -상속한 메소드 재정의 -추상 메소드 구현 -생성자 } (final class는 상속할 수 없음, final method는 재정의 할 수 없음) 슈퍼클래스 멤버 참조 상속한 슈퍼클래스 멤버 접근 public, protected, default - 직접 접근 가능 priva..