벌써 패스트캠퍼스에서 수강한 자바 스프링부트 강의가 5주차로 접어들었다.
처음 들었을 때는 문법구조도 전혀 이해 못 하고 복잡하기만 했던 코드였는데 이제는 그나마 조금씩
눈에 익어간다.
5주차에는 객체지향 프로그래밍-객체 지향 핵심 부분으로 들어선다.
이 곳에서는 인터페이스 부분과 object 클래스 그리고 Class 클래스를 배운다. 또한 컴공과 학생이라면 반가울만한 자료구조까지 배우게 된다.
먼저 인터페이스란 무엇일까?
같은 수행작업을 목표로 하는 같은 기능을 실현하게끔 명령하는 것이 인터페이스의 목적과 역할이라고 할 수 있다.
먼저 앞주차에 배웠던 자바의 장점인 다형성. 이 다형성을 더 극대화해서 나열된 코드의 수정을 줄여주고 프로그램 유지보수를 상향시키기 위해서 인터페이스를 사용하는 것이다.
인터페이스는 자바에서 interface 키워드를 이용해서 선언하여 사용할 수 있고 implements 키워드를 사용해서 일반 클래스에서 인터페이스를 구현해서 사용할 수 있다.
접근제어자 interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
......
public abstract 메소드이름();
......
}
이러한 문법의 형태로 이루어져있다. 인터페이스는 클래스와는 다르게 인터페이스의 모든 필드는
public static final 로 이루어져야 하며 모든 메소드는 public abstract으로 이루어져야한다.
class 클래스이름 implements 인터페이스이름 {
......
}
인터페이스의 구현은 위와같은 형식으로 이루어져있다. 인터페이스는 추상클래스처럼 본인이 직접 인스턴스를 생성하는 것은 안 된다. 그래서 인터페이스가 포함하고 있는 추상 메서드를 만들어줄 수 있는 class를 적어줘야만 한다.
혹여 모든 추상 메서드를 만들지 않는다면 abstract 키워드를 적용해서 추상 class로 선언을 해줘야 한다.
아래의 연습은 Cow class, Tiger class는 Beast 클래스를 상속받아서 메소드를 오버라이딩하고 있는 것이다.