본문 바로가기

JAVA/기초 프로그래밍

interface//인터페이스 NameCard

방법1

interface 인  PrintNameCard 클래스를 만들어 나머지 카드1,2에 상속 후 오버라이딩 해줌

 

메인에서

NameCard 객체 ncard 생성 후 

"이름","전화번호","이메일" 을 넣어준 후 

ncard . setPrintNameCard (new PrintNameCard2()); 로 대입해준 후 

print()로 호출하면 값이 나옴.

 

 

NameCard에  인터페이스 PrintNameCard PrintNameCard 객체 생성 후

setPrintNameCard 메서드를 만들어 

들어오는 매개변수 PrintNameCard p 값을 this . PrintNameCard에 새로 저장,

print메서드를 생성해 printNameCard.print( this ); -> this를 출력.

 

 

PrintNameCard1과 2는 원하는 정보만큼 오버라이딩 해줌.

 

 

 

 

 

 

 

Main

public class mainClass {

	public static void main(String[] args) {
		
		NameCard ncard = new NameCard("홍길동", "123-4567", "hgd@naver.com");
		
		ncard.setPrintNameCard(new PrintNameCard2());
		ncard.print();
		//이름:홍길동
		//전화번호:123-4567
		//이메일:hgd@naver.com
		
		ncard.setPrintNameCard(new PrintNameCard1());
		ncard.print();//->이름:홍길동
		
		NameCard nc = new NameCard("박유경", "123-123","abc@365.com");
		nc.setPrintNameCard(new PrintNameCard2());
		nc.print();
		//이름:박유경
		//전화번호:123-123
		//이메일:abc@365.com
	}
}

 

NameCard

public class NameCard {
	String name;
	String phone;
	String email;
	
	// class가 아닌 interface
	PrintNameCard printNameCard;
	public NameCard(String name, String phone, String email) {
		super();
		this.name = name;
		this.phone = phone;
		this.email = email;
	}
	public void setPrintNameCard(PrintNameCard p) {
		this.printNameCard = p;
	}
	public void print() {
		printNameCard.print(this);
	}
}

 


PrintNameCard

public interface PrintNameCard {

	public void print(NameCard nc);
}

 


PrintNameCard1

public class PrintNameCard1 implements PrintNameCard {

	@Override
	public void print(NameCard nc) {
		System.out.println("이름:" + nc.name);
	}
}

 


PrintNameCard2

public class PrintNameCard2 implements PrintNameCard {

	@Override
	public void print(NameCard nc) {
		System.out.println("이름:" + nc.name);
		System.out.println("전화번호:" + nc.phone);
		System.out.println("이메일:" + nc.email);
	}
}

 

 

 

 

 

 

 

 

 



 

 

 

 

 

 

(귀찮은) 방법2

 

 

 

인원이 늘어날 때마다 PrintNameCard 클래스를 새로 생성해 줘야 함.

 

 

Main

	public static void main(String[] args) {		

		NameCard ncard = new NameCard("홍길동", "123-4567", "hgd@naver.com");
		
		ncard.setPrintNameCard(new PrintNameCard());
		ncard.print();//->이름:홍길동
		
		ncard.setPrintNameCard2(new PrintNameCard2());
		ncard.print2();
		//->이름:홍길동
		//전화번호:123-4567
		//이메일:hgd@naver.com
	}
}

NameCard

public class NameCard {
	String name;
	String phone;
	String email;
	
	PrintNameCard printNameCard;	
	public NameCard(String name, String phone, String email) {
		super();
		this.name = name;
		this.phone = phone;
		this.email = email;
	}
	public void setPrintNameCard(PrintNameCard p) {
		this.printNameCard = p;
	}
	public void print() {
		printNameCard.print( this );
	}
		
	PrintNameCard2 printNameCard2;
	public void setPrintNameCard2(PrintNameCard2 p) {
		this.printNameCard2 = p;
	}
	public void print2() {
		printNameCard2.print( this );
	}
}

PrintNameCard

public class PrintNameCard {

	public void print(NameCard nc) {
		System.out.println("이름:" + nc.name);
	}
}

PrintNameCard2

public class PrintNameCard2 {

	public void print(NameCard nc) {
		System.out.println("이름:" + nc.name);
		System.out.println("전화번호:" + nc.phone);
		System.out.println("이메일:" + nc.email);
	}
}

'JAVA > 기초 프로그래밍' 카테고리의 다른 글

함수//상속//도형면적 반환  (0) 2020.06.09
ArrayList 와 LinkedList  (0) 2020.06.09
야구선수 등록 프로그램(답안)  (0) 2020.06.05
야구선수 등록 프로그램(Me)  (0) 2020.06.05
Calendar 캘린더 Class  (0) 2020.06.03