삽질의 현장/- Java

[Surro] :: Java 기초(2)

shovelman 2014. 1. 3. 01:18

접근 제어자

 

 

 

 

public : 누구나 접근 가능하다

protected : 같은 패키지 내에 있거나 상속받은 경우에만 접근 가능하다.

package-private : 아무런 접근 제어자를 적어주지 않을 때이며, package-private라고도 불린다.

같은 패키지 내에 있을 때만 접근 가능하다.

private : 해당 클래스 내에서만 접근 가능하다.

 

 

자바에서 만든 코드를 관리하는 클래스 파일(.class)이 되는 타입의 종류

- 인터페이스와 abstract 클래스, 클래스의 차이

 

인터페이스

: 어떤 메소드가 존재해야 하는지에 대한 선언만 되어 있다.

: 절대로 구현되어 있지 메소드가 있어서는 안 된다.

: 인터페이스를 구현하는 클래스에서는 implements를 사용하여 선언한다.

 

public interface InterFace {

public void methodA(); // 구현되어 있는 메소드가 하나라도 있으면 안된다.

public void methodB();

}

 

abstract 클래스

: 구현되어 있는 메소드가 있어도 상관 없다.

: abstract로 선언된 메소드가 1개 이상일 경우에는 반드시 abstract 클래스로 선언해야 한다.

: abstract로 선언된 메소드는 절대로 구현되어 있어서는 안된다.

: abstract 클래스를 확장하는 클래스에서는 extends를 사용하여 선언한다.

 

public abstract class AbstractClass {

public abstract void methodA(); // 하나라도 abstract로 선언된 메소드가 있을 경우 abstract로 선언

public void methodB();

}

 

클래스

: 인터페이스나 abstract 클래스와 다르게 모든 메소드가 구현되어 있어야 한다.

 

 

상속

 

- 생성자

: 자식 클래스의 생성자가 호출되면 자동으로 부모 클래스의 매개 변수가 없는 기본 생성자가 호출됨. 

: 부모 클래스의 생성자를 명시적으로 호출하려면 super()를 사용함.

 

- 메소드 

: 부모 클래스에 선언된 메소드들이 자신의 클래스에 선언된 것처럼 사용 가능하다 (private 제외)

: 부모 클래스에 선언된 메소드와 동일한 시그네쳐를 사용함으로써 메소드 오버라이딩이 가능하다.

: 부모 클래스에 선언되어 있지 않은 이름의 새로운 매소드 선언이 가능하다.

 

- 변수

: 부모 클래스에 private로 선언된 변수를 제외한 모든 변수가 자신의 클래스에 선언된 것 처럼 사용 가능.

: 부모 클래스에 선언되어 있지 않는 이름의 변수 선언 가능.

 

예외처리

: 자바에서 발생 가능한 예외를 처리하는 것.

 

- try-catch 기본 구문

 

try {

// 예외가 발생 가능한 문장

} catch (예외1 e1) {

     // 예외 1이 발생했을 때 처리 문장

} catch (예외2 e2) {

// 예외 2가 발생했을 때 처리 문장

} finally {

// try나 catch가 어떻게 수행되었든 간에 수행되는 문장

}

 

- throw, throws

 

throw : 예외 객체를 던지기 위해서 사용한다.

throws : 예외가 발생하면 던질 것이라고 메소드 선언시 사용한다.

 

: 메소드를 선언할 때 매개 변수 소괄호 뒤에 throws라는 예약어를 적어 준 뒤 예외를 선언하면, 해당 메소드에서 선언한 예외가 발생할 때 호출한 메소드로 예외가 전달된다.

: 두 가지 이상의 예외를 던지게 되면 implements 처럼 콤마로 구분하여 예외 클래스 이름을 적어준다.

: try 블록 내에서 예외를 발생시킬 경우에는 throw라는 예약어를 적어 준 뒤 예외 객체를 생성하거나, 생성되어 있는 객체를 명시한다.

: throw한 예외 클래스가 catch 블록에 선언되어 있지 않거나, throws 선언에 포함되어 있지 않으면 컴파일 에러가 발생.

: catch 블록에서 예외를 throw 할 경우에는 메소드 선언의 throws 구문에 해당 예외가 정의 되어 있어야 한다.

 

 

 

 

 

참조 : 자바의 신 (VOL. 1 기초 문법편)