접근 제어자
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 기초 문법편)
'삽질의 현장 > - Java' 카테고리의 다른 글
[삽잡이::java] Java코드로 날짜를 랜덤하게 생성해보자! (0) | 2016.06.08 |
---|---|
[삽잡이::java] 이름을 랜덤하게 생성해보자! 유니코드 랜덤 생성! (0) | 2016.06.08 |
[삽잡이::java] 지금은 몇일 몇시야? 여러가지로 쓸모있는 currentTimeMillis() (0) | 2016.06.07 |
[삽잡이::java]설치하자 JDK, 설정하자 환경설정 (0) | 2016.01.22 |
[Surro] :: Java 기초(1) (0) | 2014.01.03 |