Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]인터페이스 본문
Contents
접기
#핵심요약
- 인터페이스
- 다중 상속처럼 사용할 수 있는 기능
- 추상 메소드 + 상수만으로 이루어져 있다.
- 상속과 인터페이스 동시 사용
- class 클래스명 extends 클래스이름 implements 인터페이스 이름
- ex. class Student extends Person implements School
- class 클래스명 extends 클래스이름 implements 인터페이스 이름
#소스코드 - 1
인터페이스 기본 예제
// Java 프로그래밍 - 인터페이스
// School 인터페이스 (상수+추상메소드)
interface School {
public static final int MAX_CLASS = 20;
public static final int MAX_PERSON_PER_CLASS = 40;
public abstract void printSchool(); //추상메소드
}
// Student 클래스 - School 인터페이스 이용
class Student implements School { //인터페이스를 사용하려면 implements 키워드 사용
public void printSchool() {
System.out.println("00 University");
} //추상메소드 오버라이딩
}
// Person 클래스
class Person {
public String name;
public void printName() {
System.out.println("Name: " + name);
}
}
// Student2 클래스 - Person 상속, School 인터페이스 이용 (다중상속처럼 사용가능)
class Student2 extends Person implements School {
Student2(String name) {super.name = name;} //생성자
public void printSchool() {
System.out.println("11 University");
} //추상메소드 오버라이딩
}
public class Main {
public static void main(String[] args) {
// 1. 인터페이스 기본 사용
System.out.println("== 기본 인터페이스 ==");
Student s1 = new Student();
s1.printSchool();
System.out.println(s1.MAX_CLASS);
System.out.println(s1.MAX_PERSON_PER_CLASS);
// 2. 다중 상속처럼 사용하기
System.out.println("== Like 다중 상속 ==");
Student2 s2 = new Student2("A");
s2.printSchool();
s2.printName();
}
}
#소스코드 - 2
인터페이스 예제
// Practice
// 아래 GreenOrc 클래스와 NPCSystem, UserSystem 인터페이스를 이용하여
// OrkNPC1, OrkUser1 클래스를 만들어보세요.
abstract class GreenOrc {
public final String SKIN_COLOR = "녹색";
public int health;
public int attackDamage;
public int defense;
public abstract void setHealth();
public abstract void setDamage();
public abstract void setDefense();
}
interface NPCSystem {
public abstract void conversationSystem();
public abstract void questionSystem();
}
interface UserSystem {
public abstract void partySystem();
public abstract void tradeSystem();
}
// OrkNPC1 클래스
class OrkNPC1 extends GreenOrc implements NPCSystem {
@Override
public void setHealth() {
this.health = 100;
}
@Override
public void setDamage() {
this.attackDamage = 10;
}
@Override
public void setDefense() {
this.defense = 5;
}
@Override
public void conversationSystem() {
System.out.println("안녕");
System.out.println("요즘 새로운 소식 없나요?");
}
@Override
public void questionSystem() {
System.out.println("새로운 퀘스트");
System.out.println("퀘스트 완료");
}
}
// OrkUser1 클래스
class OrkUser1 extends GreenOrc implements UserSystem {
@Override
public void setHealth() {
this.health = 200;
}
@Override
public void setDamage() {
this.attackDamage = 20;
}
@Override
public void setDefense() {
this.defense = 10;
}
@Override
public void partySystem() {
System.out.println("파티 초대");
System.out.println("파티 수락");
}
@Override
public void tradeSystem() {
System.out.println("거래 신청");
System.out.println("거래 완료");
}
}
public class Practice {
public static void main(String[] args) {
// Test code
// No test code
}
}
'공부 > JAVA' 카테고리의 다른 글
[JAVA]외부 클래스와 내부 클래스(정적 클래스, 익명 클래스, 지역 클래스) (0) | 2024.04.20 |
---|---|
[JAVA]추상 클래스 (0) | 2024.04.13 |
[JAVA]다형성 (0) | 2024.04.13 |
Comments