일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오라클
- 트랜잭션의 특성
- 속성의 특징
- 단일 속성
- 자바스크립트innerText
- 복합 속성
- JAVA JVM
- 자바스크립트경고창
- 자바JVM
- 설계 속성
- 제이쿼리text
- css 선택자
- 연속성
- 유형과 무형에 따른 엔터티 종류
- java
- 고립성
- 파생 속성
- SQL 종류
- 관계 연산
- sql
- 발생시점에 따른 엔터티의 종류
- SQL문의 실행 순서
- Oracle
- 다중값 속성
- 테이블의 구조
- 속성의 종류
- 집합 연산
- 기본 속성
- alert경고창
- 결합 연산
Archives
- Today
- Total
wms's Programming&Study
인터페이스와 추상클래스 본문
인터페이스 (interface)
- 객체를 어떻게 구성해야 하는지 정리한 설계도
- 메소드 구현시 implements 예약어 사용하며 다중상속이 가능
- new를 통해 인스턴스(객체)를 생성할 수 없다.
- 인터페이스를 구현한 객체들에 대해서 동일한 동작을 약속하기 위해 존재
- 실제 코드를 만들지 않더라도 어떤 메소드들이 있어야 하는지를 정의하려고 할 때 사용
- 설계 단계에서 인터페이스만 만들어 놓고, 개발 단계에서 실제 작업을 수행하는 메소드를 만들면
설계 단계의 산출물과 개발 단계의 산출물을 보다 효율적으로 관리할 수 있다. - 외부에 노출되는 것을 정의해 놓고자 할 때 사용
다형성(Polymorphism) 이란?
하나의 타입 변수에 대입되는 객체에 따라서 실행 결과가 다양한 타입의 형태로 나오는 성질
즉, 하나의 타입 변수를 동일한 메서드로 동작시키지만 실제 동작은 다를 수 있는 성질
자바 1.8 버전부터 달라진 인터페이스
default 메소드
인터페이스가 변경이 되면, 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야 하는 문제가 있다.
이런 문제를 해결하기 위하여 인터페이스에 메소드를 구현해 놓을 수 있도록 하였다.static 메소드
인터페이스에 static 메소드를 선언함으로써,
인터페이스를 이용하여 간단한 기능을 가지는 유틸리티성 인터페이스를 만들 수 있게 되었다.
public interface Calculator {
public int plus(int i, int j);
public int multiple(int i, int j);
default int exec(int i, int j){ //default로 선언함으로 메소드를 구현할 수 있다.
return i + j;
}
public static int exec2(int i, int j){ //static 메소드
return i * j;
}
}
//Calculator인터페이스를 구현한 MyCalculator클래스
public class MyCalculator implements Calculator {
@Override
public int plus(int i, int j) {
return i + j;
}
@Override
public int multiple(int i, int j) {
return i * j;
}
}
//인터페이스에서 정의한 static메소드는 반드시 인터페이스명.메소드 형식으로 호출해야한다.
public class MyCalculatorExam {
public static void main(String[] args){
Calculator cal = new MyCalculator();
int value = cal.exec(5, 10); // default 메소드 호출
System.out.println(value);
int value2 = Calculator.exec2(5, 10); // static 메소드 호출
System.out.println(value2);
}
}
추상클래스 (abstract class)
- 추상 클래스는 클래스 앞에 abstract 키워드를 이용해서 정의
- 메소드 구현시 extends 예약어 사용
- 클래스이기 때문에 다중상속이 불가
- 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이며 미완성 설계도라고 한다. -> 상속을 통해 기능 확장 목적
- 상속을 위한 클래스이기 때문에 추상 클래스는 new를 통해 인스턴스(객체)를 생성할 수 없다.
인터페이스와 추상클래스의 사용 이유
- 개발자의 역량에 따른 메소드의 이름과 매개변수 선언의 격차를 줄일 수 있다.
- 공통적인 인테페이스와 추상클래스를 선언해 놓으면 선언과 구현을 구분할 수 있다.
인터페이스와 추상클래스 차이점
- 다중상속의 차이 - 추상클래스는 다중상속이 안되고 인터페이스는 가능
- 변수 선언 차이 - 인터페이스는 불가 (static final 변수만 가능 - 아무 인스턴스도 존재하지 않는 시점이기 때문에)
인터페이스와 추상클래스의 예시
'Programming > JAVA' 카테고리의 다른 글
프로젝트 어플리케이션 전체 서버 시간 UTC-> KOR로 설정하기 (2) | 2022.12.24 |
---|---|
동기화, 비동기화, 컨커런트 컬랙션 (0) | 2021.10.16 |
Java 7 PermGen -> Java 8 Metaspace (0) | 2021.07.15 |
JDK, JRE 및 JVM (1) | 2021.05.04 |
[JAVA] MultipartFile을 File로 변환 (0) | 2019.10.31 |