Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Java
- 서로소
- inner class
- 자바
- 재귀함수
- 자바 순열 코드
- jquery 필터선택자
- 알고리즘
- 조합 재귀
- 순열코드
- char to str
- parseInt()
- java lambda
- 재귀
- 알고리즘 그래프
- Interface
- 자바스크립트 이벤트처리
- jquery 속성선택자
- java Collections.sort()
- 상속
- 자바 조합 재귀
- str to char array
- 자바스크립트 이벤트중지
- 자바입출력
- 후위표기
- 순열 재귀
- jquery 이벤트 처리
- java 내부 클래스
- 자바 재귀 조합
- jquery dom 계층 선택자
Archives
- Today
- Total
유블로그
[Java] Interface - 추상화 본문
- Interface : 추상 method들의 집합
- 한 Class가 여러 개의 interface를 구현(implements)할 수 있다.
- interface에는 관련된 method들을 기술하는데, 선언부만 기술하고 구현부는 없다.
- 상속은 본질적으로 재사용을 위함이고, 인터페이스는 규정, 약속을 위함이다.
- 상속은 자식 Class가 부모 Class의 멤버변수와 메소드들을 그대로 자동으로 받지만,
- interface는 선언만 되어있는 추상 method들을 클래스 내에 반드시 구현해야 한다.
- 실제 구현 코드는 숨기고 기능만 제공하고자 할 때 적합하다.
- .jar 파일이 대표적인 interface이다.
+ java 8버전 부터 default method라는 method가 interface에 추가되었다. 원래 interface와 조금 달라진 것.
< 추상 클래스 >
- class와 interface의 중간 역할.
<instanceof>
현재 reference 되고 있는 객체가 상속 관계에서 어떤 객체인지를 확인할 필요가 있다.
interface Folder {
public void fold();
public void open();
default public void powerOn() {
System.out.println("power on");
}
}
class FolderblePhone extends Phone implements Folder {
private int width;
private int height;
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getSmallSize() {
return (this.width/2) * this.height;
}
public int getLargeSize() {
return this.width * this.height;
}
@Override
public void fold() {
System.out.println("fold");
}
@Override
public void open() {
System.out.println("open");
}
}
public class inter {
public static void main(String[] args) {
// interface Folder의 default method(powerOn) Test
Folder folder = new FolderblePhone();
folder.powerOn();
folder.open();
folder.fold();
// instanceof Test
Folder f = new FolderblePhone();
if( f instanceof Folder ){
System.out.println("instanceof Folder");
}
if( f instanceof Object ){
System.out.println("instanceof Object");
}
if( f instanceof Phone ){
System.out.println("instanceof Phone");
}
Phone p = new Phone();
if( p instanceof FolderblePhone ) {
System.out.println("instanceof FolderblePhone");
}
}
}
'Java' 카테고리의 다른 글
[Java] Collections (+Generic) (0) | 2020.08.11 |
---|---|
[Java] Inner class (0) | 2020.08.10 |
[Java] 다형성, 상속 (0) | 2020.08.10 |
[Java] 상속과 접근제한자 (0) | 2020.08.10 |
[Java] 입출력 처리 - Scanner, BufferedReader (0) | 2020.08.10 |