📝인터페이스(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);
// 위처럼 객체를 가지고 사용해도 되지만 실제로는 객체 생성 없이 사용이 가능한 것이 바로 상수이다
// 따라서 정석 사용법은 객체 생성없이 클래스(인터페이스)의 이름.상수명 < 이렇게 사용한다
}
}
'Java' 카테고리의 다른 글
[Java] 문자열 다루기(문자열 생성하기, 문자열 숫자로 변환하기) (0) | 2023.01.25 |
---|---|
[Java] 정수, 실수 다루기(클래스로 생성하기, 숫자를 문자열로 변환하기) (0) | 2023.01.25 |
[Java] 추상 클래스(abstract) (0) | 2023.01.20 |
[Java] super로 사용하는 상속 클래스 멤버변수 (0) | 2023.01.19 |
[Java] 메소드 오버라이딩하기(Method Overriding) (0) | 2023.01.19 |
댓글