추상화 / 상속 / 다형성 ?
> 개념설명 가능해야
상속은 실제 상위 클래스로부터 기능들을 다른 클래스로 물려주는 기법
다형성은 ~~
추상화는 앱스트랙트 추상메서드를 만들어서 실행되기 위한 메서드가 아닌 설계 목적의 메서드를 작성하는 기법
> 인터페이스 : 완전 추상체
추상클래스와 인터페이스의 차이?
추상 클래스는 기능의 확장(extends) 및 implements 가능하다.
추상클래스는 멤버, 추상메서드 상속시켜서 내용 구현 강제, 설계(20%)와 확장(80%) 목적
기능의 확장이 목적, 일부 기능을 채우는 것을 강제
인터페이스는 100% 설계 목적, 추상체만 가질 수 있다.
프로젝트 리드, 다형성 목적, call back패턴
기능의 확장 없이 설계 목적, 다형성 목적, call back패턴
인터페이스를 상속 받을 때에는 extends가 아니라 implements를 사용
implements는 한번에 여러개도 가능 (extends는 한번에 하나씩만)
public interface USB {
public final int a = 10;//상수값만 만들 수 있음 public final
public void func(); //추상화되어있음 abstract
}
접근제한자 4가지 순서
public > protected > package > private(자기 클래스 내부에서만 접근 가능)
자바에서 package는 클래스를 카테고리별로 분류한 폴더
컨벤션 - 3레벨로 나눈다 // 회사.팀or프로젝트명.분류
파일
package 접근제한자
접근제한자를 안쓰면 package 접근제한자 (=디폴트 접근제한자)
같은 패키지에서는 자유롭게 접근, 다른 패키지에서는 프라이빗
protected 접근제한자
기본적으로 같은 패키지 내의 접근만 가능
다른 패키지에 있는 상황인데 다른 패키지의 클래스에서 extends해서 상속을 받은경우 접근 가능
>다른 용도로 사용, 오버라이드 하도록 권유 (cf. 추상은 implement를 해야 쓸수 있도록 강제)
정보은닉을 하는 이유
클래스의 안전성
사용자의 편의성
캡슐화
반드시 사용해야 되는 부분만 외부에 노출시키는 방식
손코팅
selection sort 선택정렬
https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html
[알고리즘] 선택 정렬(selection sort)이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
Bubble sort 거품정렬
https://bowbowbow.tistory.com/10
Bubble Sort : 거품 정렬
Bubble Sort : 거품 정렬 Bubble Sort : 거품 정렬 Bubble Sort : 거품 정렬 소개 정렬과정 알고리즘 분석 애니매이션 예시 구현 정리 끝 소개 Bubble Sort 는 인접한 두 수를 비교하여 큰 수를 뒤로 보내는 간단..
bowbowbow.tistory.com
코드 짤때 중요한것
매서드
셋터 겟터
컬렉션
추상화란 무엇인가?
- Abstract 추상 매서드를 만들어서 실제로 실행되는 코드가 아닌 설계 목적의 코드를 작성하는 기법
상속이란 무엇인가?
- 상위 클래스의 기능들을 다른 클래스로 물려주는 기법
다형성이란 무엇인가?
- 변수 하나가 여러가지 자료형을 담을 수 있는 상태
추상클래스와 인터페이스의 차이
- 추상클래스는 추상 메서드가 하나 이상 포함되거나 abstract로 정의 된 경우
- 인터페이스는 모든 메소드가 추상 메소드
- 추상클래스는 그 추상 클래스를 상속 받아서 기능을 확장시키는 것이 목적(extends)
- 인터페이스는 메소드의 구현을 강제하는 것이 목적, (implements) 뒤에 여러개 가능
- 추상 클래스의 상속은 슈퍼클래스의 기능을 이용하거나 확장하기 위해서 사용되고 다중상속의 모호성 때문에 하나만 상속 받을 수 있다.
- 인터페이스는 해당 인터페이스를 구현한 객체들에 대해서 동일한 동작을 약속하기 위해 존재
접근제한자 public < protected < package < private
package 접근제한자
- 접근제한자를 안쓰면 package접근제한자, 디폴트 접근제한자 라고도 한다.
- 같은 패키지에서는 자유롭게 접근, 다른 패키지에서는 프라이빗
protected 접근 제한자
- 기본적으로 같은 패키지 내에서만 접근 가능
- 다른 패키지에 있어도 상속받은 경우 접근 가능
- 본래 용도 보다는 오버라이드(재정의) 하도록 권유하는 용도로 주로 쓰인다
정보 은닉을 하는 이유
- 클래스의 안전성과 사용자의 편의성을 위해
캡슐화
- 반드시 사용해야 되는 부분만 외부에 노출시키는 방식
- 내부 데이터를 외부에 노출하지 않고 은닉
- 유지보수성 향상
- 외부에 불필요한 정보를 노출하지 않고 보호
선택 정렬 Selection Sort
public class Selection {
public void sort(int[] data){
int size = data.length;
int min; //최소값을 가진 데이터의 인덱스 저장 변수
int temp;
for(int i=0; i<size-1; i++){ // size-1 : 마지막 요소는 자연스럽게 정렬됨
min = i;
for(int j=i+1; j<size; j++){
if(data[min] > data[j]){
min = j;
}
}
temp = data[min];
data[min] = data[i];
data[i] = temp;
}
}
public static void main(String[] args) {
Selection selection = new Selection();
int data[] = {66, 10, 1, 99, 5};
selection.sort(data);
for(int i=0; i<data.length; i++){
System.out.println("data["+i+"] : " + data[i]);
}
}
}
버블 정렬 Bubble sort
public class Bubble {
public void sort(int [] data){
int temp = 0;
for(int i=data.length-1; i>=0; i--){
for(int j=0; j<i; j++){
if(data[j] > data[j+1]){
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
Bubble bubble = new Bubble();
int data[] = {66, 10, 1, 34, 5};
bubble.sort(data);
for(int i=0; i<data.length; i++){
System.out.println("data["+i+"] : " + data[i]);
}
}
}
출처: https://hahahoho5915.tistory.com/6?category=653519 [넌 잘하고 있어]
'디지털 컨버전스 > JAVA' 카테고리의 다른 글
[Java] List , Set, Map (0) | 2020.02.24 |
---|---|
[ 프로그래밍 언어활용] 2020-02-21 시험 (0) | 2020.02.21 |
[Java] Collection Framework, ArrayList, Generic, Foreach (0) | 2020.02.20 |
[Java] 객체 지향 중급 문법, 상속, override (0) | 2020.02.19 |
[Java] FTP (1) | 2020.02.18 |