본문 바로가기

KOSTA

KOSTA 교육 (정적 필드, 정적 메소드, 정적 초기화, 상수 필드, final, 오버로딩, 오버라이딩, 상속)

배운 내용

 

  1. 정적필드, 정적 메소드, 정적 초기화, 상수 필드(static)
  2. 오버로딩(Overloading)
  3. 오버라이딩(Overriding)
  4. 상속(Extends)

1. 정적 필드, 정적 메소드, 정적 초기화, 상수 필드

정적필드는?

class생성시 변수를 static으로 해줌으로서 class의 변수가 되는 것

  • int a; 변수가 있을 때 static int a;라고 선언하면 class 내의 변수가 된다.
  • 정적필드는 클래스 이름으로 호출한다.
  • system.out.println (class이름. 정적필드이름);

 

정적 메소드는?

static을 사용하는 메소드이다.

  • 객체를 생성하지 않고 사용이 가능하다.
  • 호출은 system.out.println (class이름. 정적필드이름); 로 한다.

 

정적 초기화 블록은?

static 키워드가 붙은 블록이다.

  • class가 사용되기 전에 자바 가상 기계에 의해 단 한 번 호출된다.
  • 정적 필드의 초기값 설정에 주로 사용된다.
  • 일반 멤버변수를 사용하지 않는다. 이유는 class가 동작하면서 이미 static 메소드를 실행 시켰기 때문에 변수가 실행되지 않는다.

 

상수 필드는?

static과 final 키워드가 모두 붙은 필드이다.

  • 상수를 구할 땐 final을 반드시 호출을 해줘야한다.
  • final을 사용할 때에는 수정을 하면 안되는 요소가 있는 부분에 사용한다.

2. 오버로딩(Overloading)

오버로딩은?

상위 클래스의 메소드와 이름, return 값은 동일하지만, 매개변수만 다른 메소드를 만드는 것을 의미한다.

  • 메소드 이름은 같지만 메소드 내의 파라미터 타입 및 개수로 구분된다.
  • 정적필드는 클래스 이름으로 호출한다.
  • system.out.println (class이름. 정적필드이름);

 

  • 같은 메소드이지만 파라미터 안의 변수가 다르다.
  • 위의 same을 출력하면 int 값이 출력되고 밑의 same은 String 값이 출력된다.

3. 오버라이딩(Overriding)

오버라이딩은?

상속과 관련이 있으며 상위클래스에 존재하는 메소드를 하위클래스에서 필요에 맞게 수정하는 것을 말한다.

  • 자식 부모 관계에서 부모가 형변환을 한다.
  • object는 모든 데이터를 가질 수 있다.
  • 다형성을 표현한다.
  • 메소드의 이름, 매개변수, 리턴 타입이 같아야한다.

 

오버라이딩에 대한 예제는 상속과 함께 학습해보도록 하겠다.

 

4. 상속

상속은?

상속이란 상위class와 유사한 class를 만들어야하는 경우 사용한다.

  • extends 키워드를 사용하여 상속할 클래스 이름을 명시한다. Class CheckingAccount extends Account{ ~~~~~~~ }
  • 자식 class를 부모 class에 생성하면 부모도 동일하게 생성된다.
  • super함수를 사용하면 부모의 default 생성자를 생성한다.
  • super함수를 쓰는 이유는 ? 초기화할 내용이 부모에게 있기 때문이다

 

예제는 ‘비디오 대여'를 이용하여 공부해보자

 

  • 일반회원에 대한 변수를 생성한다.
  • 디폴트 생성자를 생성한다.
  • 생성자를 생성하는데 일반회원이 비디오를 빌렸기 때문에 비디오 class에서 객체를 가져와야한다.
  • private에 대한 set, get을 생성하고 회원 및 비디오 정보에 대한 출력문까지 생성한다.

 

  • 특별고객은 일반고객과 포인트밖에 차이가 없기 때문에 자식class로 생성해준다
  • 포인트를 추가 생성해야하기 때문에 추가로 변수를 생성해준다
  • 디폴트 생성자를 생성하고 생성자를 생성한다.
  • 여기서 중요한 부분은 super함수가 부모의 생성자라는 것을 파악하는 것이 중요하다.
  • set, get을 private이므로 생성하고 printPoint메소드를 생성하여 포인트를 출력할 수 있도록 만든다.
  • 오버라이딩의 경우 먼저 일반회원 class의 print 출력문을 특별회원class에 가져온다.

 

  • 비디오도 마찬가지로 변수, 디폴트, 생성자, get, set을 출력해준다.
  • 비디오는 어떤 결과를 도출할 수 없기 때문에 다른 클래스로 넘어가자.

 

  • 일반고객과 특별고객의 객체를 하나씩 생성하고 그에 맞는 파라미터 값삽입해준다.
  • 출력은 각 객체의 출력메소드를 실행시켜주면 각 클래스에 대한 값이 나온다.
  • 오버라이딩의 경우 배열을 이용하여 다향성을 구현하는데 부모class를 이용하여 배열을 만든다.
  • 배열은 하나의 데이터 타입으로 이루어져 있으므로 하나의 데이터 타입 밖에 사용할 수 없다.
  • 때문에 부모class를 이용하여 일반고객, 특별고객을 배열에 생성하고 for문을 이용하여 배열의 크기보다 작을 때 오버라이딩 했던 출력문을 출력해주면 된다.