왜 자바 의 일부 인 터 페 이 스 는 아무런 방법 이 없 습 니까?

12227 단어 자바 기반
자바 는 다 중 계승 을 지원 하지 않 기 때문에 하나의 클래스 는 하나의 부모 클래스 만 있 기 때문에 단일 계승 의 단점 을 극복 하기 위해 자바 는 인터페이스 라 는 개념 을 도입 했다.인 터 페 이 스 는 추상 적 인 방법 으로 정 의 된 집합 (상수 값 도 정의 할 수 있다) 으로 특수 한 추상 류 이다.인터페이스 에는 방법의 정의 만 포함 되 어 있 고 방법의 실현 은 없다.인터페이스의 모든 방법 은 추상 적 이다.인터페이스 에 있 는 구성원 의 역할 영역 장식 부 호 는 모두 Public 이 고 인터페이스 에 있 는 상수 값 은 기본적으로 Public static final 장식 을 사용 합 니 다.하나의 종 류 는 여러 개의 인 터 페 이 스 를 실현 할 수 있 는데, 즉 다 중 계승 을 실현 할 수 있다.       책 에서 위의 그 말 을 보 았 을 때, 나 는 인터페이스 가 도대체 무엇 인지, 무엇 에 쓰 이 는 지 여전히 잘 모르겠다.이 때문에 지 호 는 총 결 하 였 다.       클래스 와 비교 하면 클래스 는 하나의 실 체 를 묘 사 했 는데 실체의 상 태 를 포함 하고 실체 가 낼 수 있 는 동작 도 포함 하 며 이 동작의 구체 적 인 실현 절 차 를 묘사 했다.한편, 인 터 페 이 스 는 하나의 실체 가 보 낼 수 있 는 동작 만 정의 하고 구체 적 인 실현 절차 도 없고 상태 정보 도 없다.따라서 인 터 페 이 스 는 하나의 규범, 하나의 협의 처럼 추상 적 인 개념 이 고 이 협 의 를 실현 하여 이 규범 의 구체 적 인 실 체 를 만족 시 키 는 구체 적 인 개념 이다.한 조 의 방법 이 여러 가지 유형 에서 이 루어 져 야 한다 면 그것들 을 추상 화하 여 인터페이스 규범 을 만들어 야 한다.       자바 에서 일부 인터페이스 내부 에 어떠한 방법 도 설명 하지 않 았 다. 즉, 이러한 인 터 페 이 스 를 실현 하 는 유형 은 그 어떠한 방법 도 다시 쓸 필요 가 없다. 이런 방법 도 설명 하지 않 은 인 터 페 이 스 는 표지 인터페이스 라 고도 부른다. 표지 인 터 페 이 스 는 그의 유형 을 실현 하 는 데 어떠한 의미 도 요구 하지 않 고 표지 의 역할 만 한다.그것 을 실현 하 는 종 류 는 특정한 유형 에 속 한 다 는 것 을 나타 낸다.이 라벨 은 자동차의 로고 아이콘 과 유사 해서 사람들 이 자동차의 로고 아이콘 을 볼 때마다 이 차 의 브랜드 를 알 수 있다.자바 라 이브 러 리 에 이미 존재 하 는 표지 인 터 페 이 스 는 Cloneable 과 serializable 등 이 있다.사용 할 때 인 스 턴 스 대상 의 유형 이 주어진 표지 인 터 페 이 스 를 실현 하 는 지 여 부 를 인 스 턴 스 of 로 판단 합 니 다.       하나의 예 를 통 해 표지 인터페이스의 역할 을 설명 하 다.예 를 들 어 게임 을 개발 하려 면 게임 에 유용 한 재 료 를 찾 으 러 나 가 는 인물 이 있 는데 이 인물 이 광석 과 무기 만 수집 하고 쓰레기 를 수집 하지 않 는 다 고 가정 한다.다음은 표지 인 터 페 이 스 를 통 해 이 기능 을 실현 한다.
import Java.util.ArrayList;
interface Stuff{}
//    
interface Ore extends Stuff{}
//   
interface Weapon extends Stuff{}
//   
interface Rubblish extends Stuff{}

//   
class Gold implements Ore{
	public String toString()
	{
	return "Gold";
	}
}
//   
class Copper implements Ore{
	public String toString()
	{
	return "Copper";
	}
}
//  
class Gun implements Weapon{
	public String toString()
	{
	return "Gun";
	}
}
//   
class Grenade implements Weapon{
	public String toString()
	{
	return "Grenade";
	}
}

//   
class Stone implements Rubblish{
	public String toString()
	{
	return "Stone";
	}
}
public class Test{
	public static ArrayList<Stuff> collectStuff(Stuff[] s)
	{
		ArrayList<Stuff> al = new ArrayList<Stuff>();
		for(int i = 0;i<s.length;i++)
		{
			if(!(s[i] instanceof Rubblish))   //        
				al.add(s[i]);
		}
		return al;
	}


}
public stati void main(String[] args)
{
	Stuff[] s = {new Gold(),new Copper(),new Gun(),new Grenade(),new Stone()};
	ArrayList<Stuff> al = collectStuff(s);
	for(int i = 0;i<al.size();i++)
		{
			System.out.println(al.get(i));
		}
}


실행 결과: Gold Copper Gun Grenade
       상례 에서 세 개의 인 터 페 이 스 를 설계 했다. Ore, Weapon 과 Rubbish 는 각각 광석, 무기 와 쓰레기 를 대표 한다. Ore 나 Weapon 을 실현 하 는 유형 이 라면 게임 의 캐릭터 들 은 이것 이 유용 한 재료 라 고 생각 할 것 이다. 예 를 들 어 Gold, Copper, Gun, Grenade 등 이다. 그래서 수집 할 것 이다.루비 쉬 를 실현 하 는 클래스 라면 스톤 과 같은 쓸모없는 것 으로 여 겨 지기 때문에 수집 하지 않 는 다.

좋은 웹페이지 즐겨찾기