abstract 클래스
앱스트렉은 부모클래스를 인스턴스생성을 막고 단순 오버라이딩 목적으로 사용할때 사용한다.
*참조변수는 선언가능 하다 예) Friend f = new univFriend();
*상속받은 자식클래스는 반드시 오버라이딩메소드를 가지고 있어야 한다
*인스턴스 생성 불가능 예)Friend f = new Friend(); 이렇게 사용안된다
인터페이스
상속의 개념과 비슷한거 같지만 실제로 구현개념 !!!
메소드의 원형만사용하여 실제 메소드의 기능을 따로 만들어서 구현해주는 개념이라고 생각하면 된다 .
간단하게 메소드의 설계 도면이라고 생각하면 된다
큰 프로젝트를 할때 미리 만들어놓은 설계도면을 가지고 그 기능들은 각자가 알아서 작업하므로 작업 효율이 좋아진다!
예를 들면 사람을 만든다 생각해보자
사람에 필요한것들 팔 다리 머리 몸 등등 을 만든다고 가정하면 팔 다리 머리 몸을 미리 만들어 놓고
나는 팔 , a 는 다리 , b 는 머리 , c는 몸 등이 하는 일을 각각 만든다고 생각하면 된다
그래서 인터페이스에서 정해놓은 것들은 꼭 작성을 해야지 하나라도 빠지면 오류가 발생하게 된다
abstract 클래스(추상클래스) 와 인터페이스
추상클래스는 상속이라는 개념으로 들어가기 때문에 일반 메소드사용이 가능하고 몇몇 메소드만 추상적으로 사용한다
그에 반해 인터페이스는 일반메소드 사용이 불가능하고 인터페이스 내에 변수는 public static final 로 만들어 지고 메소드는 public abstract 로 만들어야 한다 ( 변수public static final , 메소드 public abstract 생략 가능 )
아래 그림처럼 인터페이스도 인터페이스 끼리 상속이 가능함
사용방법 implements !!
(참고사항 인터페이스는 아래 코드처럼 다중 구현도 가능하다 )
interface 팔 { // 팔에는 잡기 들기 라는 기능을 만들거라는 껍데기
public void 잡기();
public void 들기();
}
interface 다리 { // 다리에는 걷기 뛰기 라는 기능을 만들거라는 껍데기
public void 걷기();
public void 뛰기();
}
public class Dog implements 팔, 다리 { // 구현의 개념이라 여러개도 가능
public void 잡기() { //인터페이스에서 만들어놓은 껍데기를 실제 기능
System.out.println("물건 들어올림");
}
public void 들기() { //인터페이스에서 만들어놓은 껍데기D를 실제 기능
System.out.println("물건 들어올림");
}
public void 걷기() { //인터페이스에서 만들어놓은 껍데기를 실제 기능
System.out.println("물건 들어올림");
}
public void 뛰기() { //인터페이스에서 만들어놓은 껍데기를 실제 기능
System.out.println("물건 들어올림");
}
}
오늘배운 내용들의 정리
추상클래스와 인터페이스는 인스턴스화하여 객체로 사용불가능 .
반드시 자식클래스나 구현클래스를 통해 자신의 기능을 사용함.
추상클래스는 내부에 일반변수 선언하여 사용가능함
인터페이스는 내부에 일반변수 선언하여 사용불가능함
인터페이스는 자바의 단일 상속 특징과달리 다중 구현 가능
코드를 보면서 인터페이스에 개념을 생각하면 그렇게 안어렵다
이걸로 이해가 안되면 도일씨 블로그 가서 보면 정리 겁나 잘해놓음 ... ㄷㄷ
하여튼 오늘도 열공한 나에게 칭찬한다옳!!
'아옳옳의 코딩공부 > 아옳옳 자바코딩공부' 카테고리의 다른 글
2021-02-28 자바공부 (String 클래스) (0) | 2021.02.28 |
---|---|
2021-02-26 자바공부 (interface, Inner클래스[내부클래스]) (0) | 2021.02.26 |
2021-02-24 자바공부 (상속4 상속을 사용한 안드로이드 작업) (0) | 2021.02.24 |
2021-02-23 자바공부 (상속3 이해 , 상속의 사용목적) (0) | 2021.02.23 |
2021-02-20 자바공부 (시스템 입출력 ,배열 , 열거타입) (0) | 2021.02.20 |