Server/자바의정석

    [Java 입문] 예외2

    [Java 입문] 예외2

    사용자 정의 예외 생성 기존의 정의된 예외 클래스 외에 필요에 따라 프로그래머가 새로운 예외 클래스를 정의하여 사용할 수 있다. class MyException extends Exception{ MyException(String msg){ // 문자열을 매개변수로 받는 생성자 super(msg); // 조상인 Exception클래스의 생성자를 호출한다. } } Exception 클래스로부터 상속받아서 MyException클래스를 만들었다. 필요하다면, 멤버 변수나 메서드를 추가할 수 있다. class MyException extends Exception{ // 에러 코드 값을 저장하기 위한 필드를 추가했다. private final int ERR_CODE; // 생성자를 통해 초기화 한다. MyExcep..

    [Java 입문] throw, throws

    예외 발생시키기 thorw를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있다. 1. 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 Exception e= new Exception(”고의로 발생시켰음”); 2. 키워드 thorw를 이용해서 예외를 발생시킨다. thorw e; class Throw { public static void main(String args[]) { try { Exception e = new Exception("고의로 발생시켰음."); throw e; // 예외를 발생시킴 //throw new Exception("고의로 발생시켰음."); } catch (Exception e){ System.out.println("에러 메시지 : " + e.getMessag..

    [Java 입문] try - catch - finally

    [Java 입문] try - catch - finally

    try - catch문 예외처리(exception handling)란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것이며, 예외처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스러운 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것이다. 예외처리(exception handling)의 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 에러와 예외는 모두 실행 시(runtime)발생하는 오류이다. try { // 예외가 발생할 가능성이 있는 문장들을 넣는다. }catch (Exception1 e1) { // Exception1이 발..

    [Java 입문] 오류 & 예외

    [Java 입문] 오류 & 예외

    프로그램 오류 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 런타임 에러를 방지하기 위해서는 프로그램의 실행 도중 발생할 수 있는 모든 경우의 수를 고려하여 이에 대한 대비를 하는 것이 필요하다. 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 ‘에러(error)’와 ‘예외(exception)’, 두 가지로 구분하였다. 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 에러는 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일..

    [Java 입문] 디폴트 메서드 & Static 메서드, 내부 클래스

    [Java 입문] 디폴트 메서드 & Static 메서드, 내부 클래스

    디폴트 메서드와 Static 메서드 인터페이스가 변경되지 않으면 제일 좋겠지만, 아무리 설계를 잘해도 언젠가 변경은 발생하기 마련이다. JDK 설계자들은 고심 끝에 디폴트 메서드(default method)라는 것을 고안해내었다. 디폴트 메서드는 추상 메서드의 기본적인 구현을 제공하는 메서드로, 추상 메서드가 아니기 때문에 디폴트 메서드가 새로 추가되어도 해당 인터페이스를 구현한 클래스를 변경하지 않아도 된다. 위의 왼쪽과 같이 newMethod()라는 추상 메서드를 추가하는 대신, 오른쪽과 같이 디폴트 메서드를 추가하면, 기존의 MyInterface를 구현한 클래스를 변경하지 않아도 된다. 1. 여러 인터페이스의 디폴트 메서드 간의 충돌 - 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩해야 ..

    [Java 입문] 추상(abstract) & 인터페이스(Interface)

    [Java 입문] 추상(abstract) & 인터페이스(Interface)

    추상 메서드(abstract method) 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것이 추상 메서드이다. 메서드를 이와 같이 미완성 상태로 남겨 놓는 이유는 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 조상 클래스에서는 선언부만을 작성하고, 주석을 덧붙여 어떤 기능을 수행할 목적으로 작성되었는지 알려 주고, 실제 내용은 상속받는 클래스에서 구현하도록 비워 두는 것이다. /* 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명한다 */ abstract 리턴타입 메서드이름(); 추상 클래스로부터 상속받는 자손 클래스는 오버 라이딩을 통해 조상인 추상 클래스의 추상 메서드를 모두 구현해주어야 한다. 만일 조상으로부터 상속받은 추상 메서드 중 하나라도 구현하지 않는다면,..

    [Java 입문] 다형성(polymorphism)

    [Java 입문] 다형성(polymorphism)

    다형성이란? 상위 클래스가 동일한 메시지로 하위 클래스들을 서로 다르게 동작시키는 객체 지향 원리 자바에서는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현. class TV { protected int size; public TV(int size) { this.size = size; } protected int getSize() { return size; } } class ColorTV extends TV { protected int resolution; public ColorTV(int size, int resolution) { super(size); this.resolution = resolution; } public void printPropert..

    [Java 입문] 제어자(modifier), 캡슐화

    [Java 입문] 제어자(modifier), 캡슐화

    제이자 제어자(modifier)는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 접근 제어자 public, protected, (default), private 그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp 제어자는 클래스나 멤버 변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있다. Static 클래스 변수(static멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. 그 이유는 하나의 변수를 모든 인스턴스가 공유하기 때문이다. static이 붙은 멤버변..