본문 바로가기

개발/JAVA

3. 언어특성활용 (2) 상속, 추상화, 인터페이스

목표 : 상속과 추상, 인터페이스를 활용 및 차이 알아보기

 

1. 상속   개념1, 개념2(영상), 개념3, 예제1, 예제2

  1) 개념 : 유지보수성을 높이기 위해 객체지향을 활용하는데, 클래스 중복을 피하기 위해 나온 개념 (중복내용은 별도 클래스에 정의한 후 사용함) 

     - 기존 클래스의 변수와 메소드를 물려 받아 새로운 클래스에 사용하여 더 나은, 더 구체적인 클래스 구성 

     - 조건 : 공통멤버를 가지는 클래스들간의 공통점이 있는지 확인, 클래스간에 is a 개념이 성립하는 경우 상속가능

     -  extends : 다른 클래스에 상속할 때 사용

    

  2) 활용

     (1) 메소드 오버라이딩 : 부모로부터 상속받은 메소드의 내용을 재정의 하는 것

        - 규칙 : 상속받은 메소드 바디만 변경 /  선언부는 변경 불가 /  접근 제어자는  동일 또는 큰 범위로 변경이 가능

     (2) super : 상속받고 있는 부모개체를 말함. 

        - 부모 메소드 호출시 사용  예제1, 예제2 

 

2. 추상(abstract)  개념1(영상), 개념2, 개념3, 예제1, 예제2

  1) 추상메소드 
      - 메소드의 바디를 구현하지 않고 abstract로 선언된 메소드 

  2) 추상클래스 

      - 추상 메서드를 포함한 클래스. 추상 메서드는 구현부(body)가 없이 선언부만 있는 메서드임

        추상 클래스는 abstract 예약어를 사용하고, new 생성자를 사용해 인스턴스화 할 수 없음

   

3. 인터페이스   개념1, 개념2, 특징

  1) 개념 

    -  동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것   개념1, 개념2  

    - 추상메소드만 가지는 객체이고, 선언되는 모든 메소드는 public abstract로 인식

    - 인터페이스에 선언된 모든 변수는 public static final로 인식

 

   ex) 아이폰과 갤럭시에서 모두 사용하고 싶을때 어떻게?  

     - 이유 : 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 사용 

   

 2) 선언문  개념1, 개념2

  - 변수 선언:  interface 키워드를 통해 선언할 수 있으며 implements 키워드를 통해 일반 클래스에서 인터페이스를 구현

                    멤버변수는 항상 public static final이라는게 자동으로 붙는다.  예제1, 예제2 
                    (공공이용, Static 메모리에 사용, 내용이 정해지면 바뀌지 않는다. ) 

  - 메소드 선언: 추상 메소드(Abstract Method)만으로 클래스 (추상 메소드는 구현 내용 없이 선언만 해 놓는 형태)

  * default 메소드 선언 : JAVA 8버전부터 추가된 기능, 상속받은 모든 클래스에서 공통으로 갖는 기능 구현  개념

 3) 인터페이스 상속 

   - 단일상속, 다중상속, 복합상속  개념1, 개념2

    - default 메소드는 인터페이스를 상속하는 모든 클래스에 공통으로 갖는 기능 구현 

    - static 메소드는 프로그램 시작시 사용 준비가 완료되는 메소드