군침이 싹 도는 코딩

인터 페이스 ( interface ) 와 상수 ( constant ) 본문

JAVA/Basic

인터 페이스 ( interface ) 와 상수 ( constant )

mugoori 2023. 1. 20. 15:11
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();

}

# 인터 페이스는 클래스가 아니다 따라서 클래스 자리에 interface가 들어간다

인터페이스 안에는 멤버변수가 올수 없으며

상수 ( constant) 와 전역 변수 ( static ) 만 가능하다

상수는 static final 키워드가 있는것을 상수라한다

인터페이스와 추상클래스는 비슷하지만 다른점은 추상 클래스는

메소드를 완성해도 상관없지만 인터페이스는 메소드를 완성하면 안된다

 

 

 

package model;

public class MyCard implements Card, Player {
	
	public static final String HOST_NAME = "https://naver.com";
	public String cardNumber;
	

	@Override
	public String getCardNumber() {
		// TODO Auto-generated method stub
		return cardNumber;
	}

	@Override
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("내 카드 숫자는 : " + cardNumber);
		
	}

	@Override
	public void play(String name) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void end() {
		// TODO Auto-generated method stub
		
	}
	
	

}

# 추상 클래스는 상속을 받지만 인터페이스는 상속이 아닌 구현 ( implements ) 한다

인터페이스를 구현하는 클래스도 추상클래스와 마찬가지로 안에 있던 메소드를 받아와야한다

여기서 상속과 구현의 다른점은 상속은 1개만 받을수 있지만

구현은 여러개를 받을 수 있다

 

 

 

 

package main;

import model.Card;
import model.MyCard;

public class InterfaceMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		MyCard card = new MyCard();
		card.cardNumber = "7";
		
		String number = card.getCardNumber();
		System.out.println(number);
		
		card.print();
		
		System.out.println(card.CLOVER);
		
//		card.CLOVER = 10;
		

		System.out.println(card.HOST_NAME);

		System.out.println(MyCard.CLOVER);
		System.out.println(Card.CLOVER);

	}

}


>>>> 7
>>>> 내 카드 숫자는 : 7
>>>> 1
>>>> https://naver.com
>>>> 1
>>>> 1

# 상수는 값을 변환 시킬수 없다 이것을 사용하는 대표적인 예는 DB 호스트 DB 유저 이름 등등 이있다

상수는 메모리의 데이터 영역에 있으며 객체를 가지고 사용해도 되지만

정석은 객체없이 클래스(인터페이스)의 이름.상수명 이렇게 사용한다 ( ex : MyCard.CLOVER )