본문 바로가기
프로그래밍/Java

0406

by minNa2 2023. 4. 6.

<추상 메소드(abstract method)>
- 본문({ })이 없는 메소드
- 형식
   abstract public 리턴타입 메소드명 ( );
   (주로 부모클래스에서 자식들이 불러서 쓸 수 있도록 사용한다.)


<추상 클래스(abstract class)> // 자식들에게 나눠주기 위해서 주로 사용, 기능 X
- 사전적 의미로 추상(abstract)은 실체 간에 공통되는 특성을 추출한 것
- 추상 메소드를 하나라도 가지면 추상 클래스가 된다.
   (추상 메소드 먼저 생성하고 그 다음 추상 클래스)
- 추상 클래스는 new를 할 수 없다. (객체 생성 불가)
- 형식
   abstract class 클래스명 { }
- 추상 클래스를 상속 받는 자식클래스들은 반드시 추상 메소드를 override 해야한다.


<추상 클래스의 용도>
- 실체 클래스들의 공통된 필드와 메소드의 이름의 통일이 목적
실체 클래스를 설계하는 사람이 여러 사람일 경우,
실체 클래스마다 같은 기능을 하는 필드와 메소드가 각각 다른 이름을 가질 수 있다.
ex) class Telephone - owner, turnOn( )
      class Smartphone - user, powerOn( )

- 실체 클래스 작성 시간 절약
공통적인 필드와 메소드는 추상 클래스인 phone에 모두 선언해 두고,
실체 클래스에서 각각 다른 점만 선언하면 시간을 절약할 수 있다.


<인터페이스(interface)>
- 객체의 사용 방법을 정의한 타입으로 개발 코드와 객체가 서로 통신하는 접점 역할을 한다.
- 개발 코드가 인터페이스으 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다.
   그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알면 된다.
- 인터페이스는 추상메소드의 모음이다. (추상 클래스가 인터페이스로 발전)
- 특정 규칙을 지킨 추상클래스가 인터페이스이다.
- 작업지시서 역할을 수행한다.


<인터페이스의 특징> ★ 추상 클래스와 차이 // 인터페이스는 어떠한 역할도 X
- 상수와 메소드만을 구성 멤버로 갖는다. ★
- 생성자를 가질 수 없다. (객체 생성, new X) ★
- 상수는 반드시 선언과 동시에 초기값을 지정
- 메소드는 실행 블록이 필요없는 추상 메소드로 선언한다.
- 인터페이스가 되기 위한 규칙
   1) public final static 상수
   2) public abstract 리턴타입 메소드명 ;
   3) public default 리턴타입 메소드명( ){ } 도 추가 할 수 있다. - 디폴트 메소드
   4) public static 리턴타입 메소드명( ){ } 도 추가 할 수 있다.  - 클래스 메소드

          // static: 공유하는 것, static final: 공유하면서 상수
- 인터페이스는 상속(extends) 받지 않고, 구현(implements)한다.
- 상속도 받고, 구현도 하면 => 다중 상속의 효과를 낼 수 있다.  // 상속은 단일 상속만, 구현은 다중 상속 가능
- 여러 인터페이스의 다중 구현이 가능하다.
   interface A { }
   interface B { }
   interface C implements A, B { }


<인터페이스 구현> // 오버라이딩 안 하면 오류 발생
- 객체는 인터페이스에서 정의된 추상메소드와 동일한 이름, 매개타입, 리턴타입을 가진 실체 메소드를 가지고 있어야 한다.

반응형

'프로그래밍 > Java' 카테고리의 다른 글

0411  (0) 2023.04.11
0410  (0) 2023.04.10
0404  (0) 2023.04.04
0403  (0) 2023.04.03
0331  (0) 2023.03.31