본문 바로가기

Study/Java

[java] 예외처리, 정적필드

복습

super(A, B, C);

= this.A = A;, this.B = B;, this.C = C;

 

Account 생성자에선 디폴트 생성자를 만들어야 하지만,

CheckingAccount 클래스에선 안 만들어도 된다.

단, CheckingAccount 클래스가 자식 클래스를 갖고 있으면 디폴트 생성자를 만들어줘야한다.

 

 

메소드 시그너쳐

리턴형 메소드이름(인자) { }

 

추상클래스를 상속받은 클래스도 추상메소드를 만들어주거나, 추상메소드를 시그너쳐라도 해줘야한다.

 

공통분모인 Account클래스를 데이터형으로 주면 기존에 있는 클래스는 오버라이딩 된 메소드만 접근할 수 있게 된다.

 

CheckingAccount ch = (CheckingAccount)obj;

-> CheckingAccount만큼 obj의 크기를 잘라주고 ch에 넣었다.

try {

 ch.pay("444-55-666666", 1000);

} catch(Exception e) {}

-> CheckingAccount 클래스 안에 있는 pay 메소드를 쓰기 위한 것, pay메소드가 예외처리문이라 예외처리문을 써줬다.

 

 

Exception - 예외처리문

RuntimeException

- 실행할 때 예외메시지를 보여준다.

GeneralException

- 컴파일할 때부터 에러메시지가 뜬다. 반드시 처리해 줘야한다.

 

1. 예외가 발생하게 되면 예외처리문을 만들어 줘야한다.

-> try { } catch() { }

2. 예외처리에 대한 내용과 정보를 만들어 줘야한다.

-> try { } catch(Exception e) { //예외에 대한 정보 출력 }

 <<예외처리에 관한 가장 보편적인 스타일>>

 Exception e -> 모든 예외처리문에서 가장 상위 클래스

3. finally문은 예외처리가 발생하거나 하지 않아도 실행하게 된다. 

-> finally { //주로 close메소드가 많다. }

4. 예외처리를 다른 메소드에서 해주거나, 예외처리를 회피하는 방법

-> 리턴형 클래스이름(인자) throws Exception { }

5. 인위적으로 예외처리를 하는 방법

-> ex> if ( 조건문 ) { throw new Exception(); }

 

클래스의 정적필드

- 객체가 아니라 클래스 자체에 속하는 필드, 메소드 등의 구성요소

- static 을 사용

 

정적필드와 멤버변수의 차이점

- 멤버변수는 객체에 포함되는 변수다.

- 정적변수는 클래스의 포함된 변수이고, 공용변수이다.

- 멤버변수는 객체마다 따로 생기게 되지만, 정적변수는 특정 객체에 상관없이 클래스 자체에 하나만 생기는 정적필드다.

 

ex>

class StaticTest 
{
 static int num1 = 1; //공용변수 역할
 int num2 = 1; //멤버변수 -> 객체에 의해서만 접근
 
 public static void show() {

 //객체를 생성하지 않고도 호출이 가능
  System.out.println("출력 확인");
 } 
 public static void main(String[] args) 
 {
  StaticTest st1 = new StaticTest();

  st1.num1++;
  st1.num2++;
  
  StaticTest.show();

  int r = (int)(Math.random()*10);

  System.out.println("결과 : " +StaticTest.num1);
  System.out.println("결과 : " +st1.num2);
  System.out.println(r);
 }
}

 

상수필드는 final static ~ 으로 선언한다.

- 초기값을 바꿀 수 없을 때 상수값으로 적당하다.

 

정적 메소드

- static 키워드를 붙여서 선언한 메소드

- 특정 객체에 종속되지 않고 기능을 수행하는 메소드, 기능적 메소드

- 이런 메소드들은 객체에 값을 저장할 필요가 없다.

 

정적 초기화 블록

static 키워드가 붙은 블록

ex> static { ... }

클래스가 사용되기 전, 자바 가상 기계에 의해 단 한 번 호출된다
- 정적 필드 초기값 설정에 주로 사용

- 한 클래스에 두 개이상의 블록도 사용 가능하다.

 

패키지

- 폴더와 같은 의미

- 다른 패키지 안에 있는 함수를 쓰려면 쓰고자하는 패키지 안에서 import로 선언해준다. 단, 접근 제어자를 public 선언해 줘야한다.

클래스도 마찬가지이다. 너무 많은 접근을 허락하기 원치 않을 땐, protected를 쓰는 방법도 있다.

 

접근제어자

protected - 같은 폴더안에서만 접근을 허락한다.

'Study > Java' 카테고리의 다른 글

[java] String, StringBuffer 실습  (0) 2019.05.15
[java] 참조값, instead of, 클래스  (0) 2019.05.15
[java] 상속, 인터페이스 실습  (0) 2019.05.15
[java] 상속, 인터페이스  (0) 2019.05.15
[java] for문의 활용  (0) 2019.05.15