본문 바로가기
Java

[Java] 인터페이스(interface)

by coding_su 2023. 1. 20.

📝인터페이스(interface)

인터페이스는 만들때 클래스가 아니라 클래스 대신 interface 입력하고

인터페이스는 다른 클래스가 구현할때 사용한다

+ 인터페이스는 constant(상수)와 스태틱변수(메모리)가 가능하다

 (둘 다 데이터 영역에 저장되고 공유가 가능하다)

상수란?
변수 비슷하지만 한번 데이터를 저장하면 값을 바꿀 수 없는 것이다(상수는 메모리의 데이터 영역에 저장된다)

상수는 static final 키워드가 있어야한다
사용법은 객체를 가지고 사용해도 되지만 실제로는 객체 생성 없이
클래스(인터페이스)의 이름.상수명 < 이렇게 사용한다

 

package model;

public interface Card {
	public static final int CLOVER = 1;	
	public static final int HEART = 2;
	public static final int DIAMOND = 3;
	public static final int SPADE = 4;
	
	public String getCardNumber();
	public void print();
}

package model;

public interface Player {
	public void play(String name);
	
	public void end();
}

 

클래스에 상속이 아닌 구현한다고 표현한다 implements를 입력해서 사용

(extends로 상속받는 것과는 다르게 implements는 여러개 가능하다)

package model;

public class MyCard implements Card, Player {
	
	public String cardNumber;
	public static final String HOST_NAME = "https://namver.com";
	
	@Override
	public String getCardNumber() {
		return cardNumber;
	}

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

	@Override
	public void play(String name) {
	}

	@Override
	public void end() {
	}
}

 

위해서 만든 클래스 MyCard 임포트해서 사용해보기

package main;

import model.MyCard;

public class InterfaceMain {
	public static void main(String[] args) {
		
		MyCard card = new MyCard();
		card.cardNumber = "7";
		
		String number = card.getCardNumber();
		System.out.println(number);
		
		card.print();
		
		System.out.println(card.CLOVER);
		
		// 아래 코드는 CLOVER가 상수이므로 값 변경이 안된다
		card.CLOVER = 10;
		
		// 상수는 언제 사용할까?
		// 디비 호스트, 디비 유저 이름 등등
		System.out.println(MyCard.HOST_NAME);
        
        // 위처럼 객체를 가지고 사용해도 되지만 실제로는 객체 생성 없이 사용이 가능한 것이 바로 상수이다
        // 따라서 정석 사용법은 객체 생성없이 클래스(인터페이스)의 이름.상수명 < 이렇게 사용한다
        
	}
}

 

댓글