본문 바로가기
🤼‍♂️ 5. Project/5-2 연습문제 풀이

[혼자공부하는자바] 8장 인터페이스

by 달님🌙 2021. 8. 11.
반응형

1절 인터페이스

 

1. 인터페이스 OX 문제

① O

② X

③ O

④ O

 

2.

① O

② O

③ X

④ O

 

3.

<인터페이스>

interface Soundable {
	// 추상 메소드
	public abstract String sound();
}

 

<객체 클래스>

class Cat implements Soundable{
	@Override
	public String sound() {
		return "야옹";
	}
}

class Dog implements Soundable {
	@Override
	public String sound() {
		return "멍멍";
	}
}

 

<실행 코드>

public class SoundableExample {
	private static void printSound(Soundable soundable) {
		System.out.println(soundable.sound());
	}
	
	public static void main(String[] args) {
		printSound(new Cat());
		printSound(new Dog());
	}
}

 

<출력 결과>

야옹
멍멍

 

 

2절 타입 변환과 다형성

 

1. 인터페이스 타입 변환 OX 문제

① O

② X -> 상속 받은 자식 클래스는 인터페이스 구현하는 것 까지 상속 받는다. 따라서 자동 타입 변환 가능

③ O

④ O

 

2. 다형성 OX문제

① O

② O

③ X -> 자식 클래스로 만든 객체도 대입 가능

④ O

 

3. 

<인터페이스>

interface DataAccessObject {
	public void select();
	public void insert();
	public void update();
	public void delete();
}

 

<구현 클래스 1>

class OracleDao implements DataAccessObject {
	public void select() {
		System.out.println("Oracle DB에서 검색");
	}
	public void insert() {
		System.out.println("Oracle DB에 삽입");
	}
	public void update() {
		System.out.println("Oracle DB를 수정");
	}
	public void delete() {
		System.out.println("Oracle DB에서 삭제");
	}
}

 

<구현 클래스 2>

class MySqlDao implements DataAccessObject {
	public void select() {
		System.out.println("MySql DB에서 검색");
	}
	public void insert() {
		System.out.println("MySql DB에 삽입");
	}
	public void update() {
		System.out.println("MySql DB를 수정");
	}
	public void delete() {
		System.out.println("MySql DB에서 삭제");
	}
}

 

<실행 클래스>

public class DaoExample {
	// 매개값으로 인터페이스 타입을 받는 메소드 dbWork() 선언
	public static void dbWork(DataAccessObject dao) {
		dao.select(); // 인터페이스 내의 메소드 호출
		dao.insert();
		dao.update();
		dao.delete();
	}
	
	public static void main(String[] args) {
		dbWork(new OracleDao()); // 매개값으로 OracleDao 객체를 넣어줌
		dbWork(new MySqlDao()); // 매개값으로 MySqlDao 객체를 넣어줌
	}
}

 

<출력 결과>

Oracle DB에서 검색
Oracle DB에 삽입
Oracle DB를 수정
Oracle DB에서 삭제
MySql DB에서 검색
MySql DB에 삽입
MySql DB를 수정
MySql DB에서 삭제

 

반응형

댓글