오늘이라도

24. String ②, static, 상속, 다형성 ① 본문

취업성공패키지 SW 개발자 교육/Java

24. String ②, static, 상속, 다형성 ①

upcake_ 2020. 3. 24. 20:30
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 


▲예제 01. 문자열의 대소, 동등 관계 비교

 - 문자열의 대소 관계는 비교 연산자를 사용할 수 없다.

 - 따라서 문자열의 대소를 비교할 때에는 compareTo() 메서드를 사용하게 된다.

 - compareTo() 메서드는 문자열을 유니코드 값으로 변환 후 비교하며 양수, 0, 음수 값이 출력된다.

 - 문자열의 동등 관계는 equals() 메서드를 사용하며 true, false 값이 출력된다.

 - compareToIgnoreCase(), equalsIgnoreCase() 메서드는 대소문자 구분 없이 비교할 때 사용한다.

 

 

▲문제. 문자열 분리, 내림차순 정렬, 출력

 

 

▲예제 02. static

 - static 키워드가 붙은 블록은 프로그램 시작 전에 먼저 메모리에 할당되고 프로그램 종료 시 소멸된다.

 - static {}, 블록에 static 키워드만 붙은 블록은 초기화 블록이라 하여 가장 먼저 실행하고 싶을 때 사용한다.

 

 

▲예제 03-1. static과 private
▲예제 03-2. static과 private

 - static이 붙은 메서드는 접근이 편리하지만 메모리를 많이 잡아먹기 때문에 너무 많이 사용하지 않도록 한다.

 

 

▲예제 04-1. Mouse 예시를 통한 메서드 상속 설명

 - 상속을 통해 중복되게 코딩하지 않고 같은 메서드를 여러 클래스에서 사용할 수 있다.

 

▲예제 04-2. 마우스

 - 상속을 시켜주는 클래스를 상위 클래스, 부모 클래스, 슈퍼 클래스라고 한다.

 

▲예제 04-3. 휠마우스

 - 상속을 받는 클래스를 하위 클래스, 자식 클래스, 서브 클래스라고 한다.

 

▲예제 04-4. 광마우스

 - 자식 크래스에서 부모 클래스로부터 상속받은 메서드를 재정의 할 수 있는데 이를 Override라고 한다.

 - 오버라이드의 방법엔 3가지가 있다.

  ① 하드 코딩 후 @Override Annotation 붙이기

  ② 이클립스 기준, Source - Override/Implement Methods 후 수정

  ③ 자동 완성 기능(Ctrl + Space) 사용 후 수정

 

 

▲예제 05-1. Animal 예시를 통한 멤버 변수 상속 설명

 - 상속을 통해 메서드뿐만 아니라 멤버 변수 또한 여러 클래스에서 사용할 수 있다.

 

▲예제 05-2. 동물

 - 부모 클래스에 상태 정보를 기록한다. (DTO, VO 클래스)

 - 상태 정보 기록은 멤버 변수 선언 - 기본 생성자 메서드 - 매개 변수 초기화하는 생성자 메서드 - 입출력 메서드 순서로 이루어진다.

 

▲예제 05-3. 강아지
▲예제 05-4. 고양이

 - 자식 클래스에서 부모 클래스로부터 멤버 변수를 상속받을 수 있다.

 

 

▲예제 06-1. Animal 예시를 통한 다형성 설명

 - A a = new A(); → 일반적인 객체 생성

 - A a = new B(); → 다형성(UpCasting) : B(하위) → A(상위)

 - night() 메서드는 상위 클래스인 Animal에서 상속받지 않은 메서드여서 cry() 메서드처럼 일반적인 객체 생성을 통해 사용하려면 작동하지 않는다.

 - UpCasting을 통해 이러한 문제를 해결할 수 있다.

 

▲예제 06-2. Animal, 행위 정보를 적은 상위 클래스
▲예제 06-3. Dog, Animal 클래스를 상속 받는 하위 클래스

 - 상속받은 메서드 cry()를 재정의하였다.

 

▲예제 06-4. Cat

 - 상속받은 메서드 cry()를 재정의하였다.

 - 상속받지 않은 메서드 night()를 추가하였다.

 

▲예제 06-5. 다운 캐스팅 예시

 - 업 캐스팅뿐만 아니라 다운 캐스팅을 통해서도 night() 메서드를 사용할 수 있다.

 - B b = (B) a : 다운 캐스팅

 - 다형성의 전제 조건

  ① 상속 관계일 것 : public class B extends A

  ② Override 필수

  ③ UpCasting으로 객체를 생성하여 부모 클래스 쪽으로 할당한다 : A a = new B();

  

반응형