일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- dependency
- start.spring.io
- 콜렉션
- 제네릭
- 빌드
- 클래스
- Jenkins
- 내장객체
- 박싱
- Short
- 언박싱
- 자동형변환
- suvlet
- wrapper
- 루프
- 싱글턴
- 무한
- maven
- bootstrap
- 싱글톤
- 인텔리제이
- https://start.spring.io
- Java
- 스프링
- 메소드
- 컬렉션
- boxing
- Scanner
- 제너릭
- unboxing
Archives
- Today
- Total
Developer Gonie
[2주차] 51. 인터페이스, 인터페이스와 클래스 상속을 동시에 받는 예제 본문
아래의 예시는 Phone 클래스를 만드는데,
폰의 특성은 Shape2 클래스로 상속받고, 기능은 인터페이스 여러개로 상속받는 예제이다.
코드
interface Camera{
void takePhoto(); // 인퍼페이스 안에있는 메서드라면 자동으로 public abstract 가 앞에 붙음
}
interface Music{
void playMusic();
}
interface DBM{
void viewTV();
}
class Shape2{
private int size;
private String color;
Shape2(){
}
Shape2(int size, String color){
this.size = size;
this.color = color;
}
int getSize() {
return size;
}
void setSize(int size) {
this.size = size;
}
String getColor() {
return color;
}
void seColor(String color) {
this.color = color;
}
}
class Phone extends Shape2 implements Camera, Music { // 클래스 상속 extends가 implements보다 앞에 위치해야 오류가 안남
public Phone(int size, String color) {
super(size, color);
}
//아래의 두 메서드는 반드시 완성해야 함. 인터페이스를 받았기 때문. 그래서 이름이 구현(implements)인가보다.
@Override
public void playMusic() {
System.out.println("음악감상");
}
@Override
public void takePhoto() {
System.out.println("사진찍기");
}
}
public class Ex06_13_인터페이스 {
public static void main(String[] args) {
Phone p = new Phone(7, "blue");
//부모가 총 3개라서 다형성에 의해 아래와 같은게 가능한데 각 상황마다 접근 못하는 메소드들이 있음
//Shape2 p = new Phone(7, "blue"); //-> takePhoto(), playMusic() 두 메소드 호출불가
//Camera p = new Phone(7, "blue"); //-> 아래서 takePhoto() 만 호출가능
//Music p = new Phone(7, "blue"); //-> 아래서 playMusic() 만 호출가능
System.out.println(p.getSize());
System.out.println(p.getColor());
System.out.println(p.getSize());
System.out.println(p.getColor());
p.takePhoto();
p.playMusic();
}
}
실행결과
7
blue
7
blue
사진찍기
음악감상
'K-DigitalTraining 강의 > 1. Java' 카테고리의 다른 글
[2주차] 53. 예외처리, throws를 이용해 예외를 다른 곳에서 처리하기 (0) | 2022.06.01 |
---|---|
[2주차] 52. 예외처리, try - catch - (finally) 구문 (0) | 2022.06.01 |
[2주차] 50. 인터페이스, 추상클래스와의 차이점*** (0) | 2022.06.01 |
[2주차] 49. 추상클래스, 반드시 만들어야할 것에 대해 미완성된 밑그림을 그려두는 것 (0) | 2022.05.27 |
[2주차] 48. 다형성, 이해를 위한 또 다른 예제* (0) | 2022.05.27 |
Comments