드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 액션바
  • Python
  • volley
  • tensorflow
  • Retrofit2
  • AWS
  • AWS Lambda
  • Callback
  • Transfer Learning
  • Java
  • rest api
  • 딥러닝
  • 깃이그노어
  • github
  • aws s3
  • fine tuning
  • 서버리스
  • 안드로이드 스튜디오
  • JWT
  • GET
  • serverless
  • Ann
  • API
  • flask
  • pandas
  • Streamlit
  • Lambda
  • CNN
  • 네이버 API
  • EC2

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

Java

Java - 인터페이스(Interface)

2023. 1. 20. 17:26

1. 인터페이스

  • 인터페이스는 클래스가 아니지만, 일종의 추상 클래스라고 생각할 수 있다.
  • 추상 클래스보다 추상화 정도가 높아서 추상 메소드 이외의 일반 메소드나 변수를 구성원으로 가질 수 없다.
    오직 추상 메소드와 상수(constant)만 멤버로 가질 수 있으며, 그 외의 요소는 허용하지 않는다.
  • 클래스는 하나의 상속만 가능하지만, 인터페이스는 다중 상속(다중 구현)이 가능하다.
  • 정의할 때 class가 아닌 interface를 써서 정의한다.
  • 클래스의 상속은 extends를 쓰지만 인터페이스의 구현은 implements를 사용한다.
  • 추상클래스와 마찬가지로, 하위 클래스는 모든 추상 메소드를 구현해야 객체로 생성할 수 있다.
  • 제약 사항
    • 모든 멤버 변수는 public static final 이어야 하며, 생략 가능.
    • 모든 메소드는 public abstract 이어야 하며, 생략 가능.

public interface Card {
  public static final int SPADE = 4;
  final int DIAMOND = 3;
  static int HEART = 2;
  int CLOVER = 1;
  // 위의 상수는 모두 public static final이며, 생략된 형태이다.
  // 자동으로 상수처리 되기 때문에 값을 바꿔보려고 시도해도 바꿀수 없다.
  
	public String getCardNumber();
	public void print();		
}


public interface Player {

	public void play(String name);
	
	public void end();
}


// 인터페이스는 다중 implements가 가능
public class MyCard implements Card, Player {

	public String cardNumber;
	
	@Override
	public String getCardNumber() {
		return cardNumber;
	}

	@Override
	public void print() {
		System.out.println("내 카드 숫자는 : " + cardNumber);
	}

	@Override
	public void play(String name) {
		코드 구현
	}

	@Override
	public void end() {
		코드 구현
	}

 

 

 

2. 인터페이스의 사용 이유

소프트웨어가 실행되는 환경은 매우 다양하다.

소프트웨어를 개발할 때 실행될 환경을 고려하지만 모든 환경을 만족시킬 수는 없다.

한번에 모든 환경에서 실행될 수 있는 소프트웨어를 개발하는 것이 아니라, 부품 교체하듯이 그 환경에 맞는 코드로 일부를 교체하는 것이 효과적이다.

인터페이스는 소프트웨어를 부품처럼 개발하여 각 부품을 연결하는 이음면이다.

이음면은 표준화되어 이 표준에 맞게 구현된 코드는 무엇이나 연결할 수 있다.

그래서 인터페이스는 주로 API로 사용된다.

 

 

 

3. 인터페이스의 장점

  • 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능하다.
  • 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있다.
  • 클래스와 클래스 간의 관계를 인터페이스로 연결하면 클래스마다 독립적인 프로그래밍이 가능하다.

'Java' 카테고리의 다른 글

Java - 문자열, 정수, 실수 등을 생성하는 방법  (0) 2023.01.25
Java - final 키워드  (0) 2023.01.20
Java - 추상 클래스 (Abstract Class)  (0) 2023.01.20
Java - 변수의 종류와 메모리 구조  (0) 2023.01.20
Java - 클래스 상속(Inheritance), 오버라이딩(Overriding)  (0) 2023.01.19
    'Java' 카테고리의 다른 글
    • Java - 문자열, 정수, 실수 등을 생성하는 방법
    • Java - final 키워드
    • Java - 추상 클래스 (Abstract Class)
    • Java - 변수의 종류와 메모리 구조
    드레:
    드레:

    티스토리툴바