01. Java (v)
02. git
03. Database
04. Jsp [Server]
05. 미니프로젝트 (3W)
06. HTML,CSS
07. JS
08. SpringFramework , SrpingBoot
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)
인터페이스 선언된 변수는 public static final을 생략하더라도 컴파일 과정에서 자동으로 붙음.
인터페이스의 메서드를 추상메서드 형식으로 선언하면 abstract를 붙이지 않더라도 자동으로 컴파일 과정에서 붙음
클래스에서 인터페이스를 구현할 때는 클래스 이름 앞에 implements 키워드 사용
다중상속 지원
public class Basic implements Inter01,Inter02{
// 인터페이스 상속은(구현) implements키워드 입니다.
// 여러 인터페이스를 동시에 구현하는게 가능
@Override
public void method01() {
System.out.println("재정의된 메서드 1번 실행");
}
@Override
public void method02() {
System.out.println("재정의된 메서드 1번 실행");
}
}
// 인터페이스1
public interface Inter01 {
// 상수와 추상메서드를 가진다.
double PI = 3.14; // 인터페이스에 변수 선언시 상수취급\
void method01(); // 인터페이스에 메서드를 선언하면 자동으로 추상메서드가 됨.
}
// 인터페이스2
public interface Inter02 {
int ABC=123;
void method02();
}
메서드 명세서
// 인터페이스
public interface IPet {
void play();
}
// 인터페이스를 상속받는 클래스
public class GoldFish extends Fish implements IPet{
@Override
public void swim() {
System.out.println("금붕어는 어항에서 수영");
}
@Override
public void play() {
System.out.println("금붕어는 어항에서 놀아요");
}
}
public class Cat extends Animal implements IPet{
@Override
public void eat() {
System.out.println("고양이는 생선을 먹어요");
}
@Override
public void play() {
System.out.println("고양이는 방에서 놀아요");
}
}
public class Dog extends Animal implements IPet{
@Override
public void eat() {
System.out.println("강아지는 사료먹어");
}
@Override
public void play() {
System.out.println("강아지는 밖에서 놀아요");
}
}
// main메서드
public class MainClass {
public static void main(String[] args) {
Animal baduk = new Dog();
Animal navi = new Cat();
Animal hodol = new Tiger();
Animal[] arr = {baduk,navi,hodol};
for(Animal a:arr) {
a.eat(); // animal처럼 동작됨
}
//펫 타입
IPet[] arr2 = new IPet[3];
arr2[0]=(IPet)baduk; // 바둑이는 Animal타입이지만, IPet을 구현하고 있어서 상호 형변환이 가능
arr2[1]=(IPet)navi;
arr2[2]=new GoldFish();
for(IPet pet:arr2) {
pet.play(); // 펫처럼 사용
}
}
}
인터페이스간에도 상속이 가능
인터페이스간에 상속은 extends를 이용
public interface Todo1 {
// 인터페이스 간에도 상속이 됩니다. - extends 사용
void method01();
}
public interface Todo2 {
void method02();
}
public interface Todo3 extends Todo1,Todo2{
// 인터페이스 간에도 상속이 됩니다. - extends 사용
void method03();
}
인터페이스는 상수 와 추상메서드만을 구성멤버로 가짐
인터페이스의 구현 키워드는 implements
이며 인터페이스도 extends
키워드를 사용해 인터페이스 간의 상속 구현 가능
컴파일러 체크 예외는 자바 소스를 컴파일하는 과정에서 예외 처리 코드를 검사하여 예외 처리코드가 없다면 컴파일 오류가 발생
실행 예외는 컴파일하는 과정에서 예외처리 코드를 검사하지 않는 예외
주요 실행 예외
try ~ catch ~ finally
try{
예외 발생 가능성이 있는 코드
} catch(Exception e){
// Exception은 모든 예외 처리
예외 발생시 실행될 코드
} finally{
예외가 발생되지 않더라도 반드시 실행될 코드
}
다중 catch
|
로 연결하면 되며 이 방식을 사용할 때는 두 예외가 상속 관계가 있으면 안됨.try{
코드 작성 영역
}catch(NumberFormatException | NullPointerException e ){
코드 작성 영역
}
throws
public static void main(String args[]) throws NumberFormatException{
~~~
}
throw
사용자 정의 예외
public calss MyException extends Exception{
public MyException(){}
public MyException(String message){
super(message);
}
.....
}