[자바] 인터페이스 연습02

오늘·2021년 3월 17일
0

문제풀기

목록 보기
22/24

익명 구현 객체

인터페이스는 미완성된 상태기때문에 객체 생성을 new로 하지 못하는데
생성을 함과 동시에 오버라이딩하면 사용 가능하다
= 익명 구현 객체

인터페이스 변수 = new 인터페이스() {
	@Override
	// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언
};

자바는 UI 프로그래밍에서 이벤트를 처리하기위해, 혹은 임시 작업 스레드를 만들기 위해 익명 구현 객체를 많이 활용한다.

익명 구현 객체 연습 01

public class Anon {
	public static void main(String[] args) {
		// 익명 구현 객체
		Inter i = new Inter() {
			@Override
			public void abM() {
				System.out.println("익명 구현 객체에 오버라이딩 한 모습");
			}
		};
		i.abM();
		System.out.println("-------------------");
		
		// 인터페이스를 연결한 클래스를 객체 생성해
		// 메소드를 호출하는 모습
		CalssA ca = new CalssA();
		ca.abM();
	}
}




// 인터페이스
interface Inter{
	void abM();
}




// 구현 클래스
class CalssA implements Inter{
	@Override
	public void abM() {
		System.out.println("구현객체에서 오버라이딩한 모습");
	}
}

실행 모습


단어 5개 받아서 역순으로 출력하기

interface - 스택에 들어있는 문자열 개수 리턴

public interface StatckInterface {
	int length();
	String pop();
	boolean push(String ob);
}

인터페이스 받아 구현하는 클래스

public class StringStack implements StatckInterface {
	private String[] element;
	private int index;
	
	public StringStack(int capacity) {
		// 객체생성되면서 capacity 값 10 들어옴
		element = new String [capacity];
		// 입력한 자료를 배열에 넣을 때 인덱스
		index = 0;
	}
	@Override
	public int length() {
		return index;
	}
	@Override
	public String pop() {
		if (index == 0) {
			return null;
		}
		index--;
		return element[index];
	}
	@Override
	public boolean push(String ob) {
		if(index == element.length) {
			// 인덱스 길이와 배열길이가 같으면 들어갈 공간이 없으니
			return false;
		}
		element[index++] = ob;
		return true;
	}
}

출력하는 Main

public class StackManager {
	public static void main(String[] args) {
		StringStack s = new StringStack(10);
		Scanner sc = new Scanner(System.in);
		
		System.out.println("단어 5개 입력");
		System.out.print(">>");
		for(int i=0; i<5; i++) {
			String txt = sc.next();
			s.push(txt);
		}
		int count = s.length();
		for(int i=0; i<count; i++) {
			System.out.println(s.pop() + " ");
		}
		s.pop();
	}
}

실행결과

0개의 댓글