일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프론트엔드개발자
- 딥러닝
- 영상처리
- 부트캠프
- 깃
- JS
- 개발블로그
- pokeapi
- 개인프로젝트
- FE
- 패캠
- 패스트캠퍼스
- 패스트캠퍼스부트캠프
- 국비지원취업
- 자바스크립트 코딩테스트
- 프로젝트
- 깃허브
- 개발 프로젝트
- 패캠부트캠프
- 프로그래머스 JS 코테
- 미니 프로젝트
- 프론트엔드부트캠프
- js코테
- Java
- 프로그래머스
- 프로그래머스코테
- 자바스크립트
- 프론트엔드
- 코딩테스트
- 국비지원
- Today
- Total
가쟤의 해변일기 🐳
풀스택과정 Java - 인터페이스 | Abstract Class | Collection API | Access Modiifier | Abstract Class | Collection API | Comparator, Comparable 본문
풀스택과정 Java - 인터페이스 | Abstract Class | Collection API | Access Modiifier | Abstract Class | Collection API | Comparator, Comparable
바닷가쟤 2025. 5. 19. 14:00
자바 프로젝트도 해서 바쁘고 감기에 무슨 2-3주 걸려있어서 이것 저것 놓친게 많다...ㅜㅠ
수업 필기는 계속 해놨는데 블로그에 못 올려서 밀린걸 이제 다 올려보려 한다.. !!
코테 스터디ㅜㅜ 많이 밀려서 오늘부터 남아서 열심히 해야겟다 !
💡 2025 04 25
1. 인터페이스 정의와 사용 용도
2. Abstract Class
3. Collection API
Class 부모는 Polymorhism 컨테이너 타입으로 사용했다.
배열 타입으로 생성한다.
인터페이스는 Flyer arr = new Flyer[3]; 이건 되는데 abstract랑 상관 없이 타입만 만드는 거라 된다고 한다.
Flyer[] flies = { new Bird(), new SuperMan(), new Bird()}; 이건 된다 . . .
인터페이스가 가지는 메소드를 오버라이딩 하고 누군가가… 객체를 생성한 것이다.
인터페이스는 객체를 생성할 수 없음. .
public abstract class Employee 이렇게 하면 좋다.
부모 클래스도 타입을 만들어 주는 애니까 .. . 객체 생성을 못 하도록 막아버리는 것이다..!
자바는 다중 상속이 안 된다.
그래서 다중 상속을 인터페이스로 해결한다.
인터페이스는 다중 상속을 허용한다.
class Child extends A implements B, C, D
💡 2025 04 28
1. Access Modifier
2. Abstract Class
3. Collection API ⭐
4. Comparator, Comparable </aside>
Virtual Method Invocation 원리
컴파일 시점 메소드 ::: 부모 메소드가 호출
실행 시점 메소드 ::: 자식 메소드가 호출
상속 시 오버라이딩 된 메소드에서는 부모의 메소드가 숨겨지고 자식 메소드가 우선적으로 실행된다.
Method Overriding Rule
- 메소드 선언부 일치(반환 타입, 메소드명, 인자값)
- 메소드 구현부는 반드시 달라야 한다.
- Model Modifier, Less Exception!!!
Polymorphism 다형성
부모 타입으로 여러 개의 자식들을 단일하게 관리하는 능력
부모 타입으로 여러 자식들을 생성하는 기법
Collection
Set
- unique
Collection 다음으로 원시적인 방법으로 객체를 저장
중복 X, 순서 X
List
- ordered
시작과 끝점을 가지면서 환원형으로 객체를 저장
내부적으로 INDEX로 관리되는 것들은 다 순서를 가진다!!1
중복 O, 순서 O
Map
- KEY - VALUE가 쌍으로 저장
Collection 계보도에서 볼 수 없는 독자적인 방식으로 객체를 저장
중복 X(KEY), 순서 X
ArrayList, LinkedList, (Vector)
ArrayList
- List의 자식으로, 순서를 가지면서 객체를 저장한다. (중복도 가능)
add(), remove(), get(), set(), size(), isEmpty(), clear(), removeAll()
public class ArrayListTest1 {
public static void main(String[] args) {
// 알아서 10칸짜리 배열이 만들어지고.. 11명을 추가하려 하면 알아서 다시 10칸이 늘어난다.
ArrayList<Employee> list = new ArrayList<>();
list.add(new Employee(111, "AAA", 20000.0)); // add
list.add(new Employee(222, "BBB", 20000.0));
list.add(new Employee(333, "CCC", 20000.0));
list.add(new Employee(444, "DDD", 20000.0));
// 1. 3번째 객체를 삭제
Employee delEmp = list.get(2); // get
boolean find = list.remove(delEmp); // remove
System.out.println("정말 삭제 되었나요? > " + find);
// 2. 2번째 FFF 객체를 추가
list.add(1, new Employee(225, "FFF", 30000.0));
// 3. 마지막 객체의 급여를 32000.0로 변경
list.set(list.size() - 1, new Employee(444, "DDD", 32000.0)); // size
// 4. list안의 모든 정보를 출력(list 안이 비어있지 않다면)
for(Employee e: list) {
if(!list.isEmpty()) // isEmpty
System.out.println(e);
}
}
}
ArrayList 정렬 (오름차순, 내림차순)
Comporator 방식으로 정렬
public class SortTest3 {
public static void main(String[] args) {
// 알아서 10칸짜리 배열이 만들어지고.. 11명을 추가하려 하면 알아서 다시 10칸이 늘어난다.
ArrayList<Employee> list = new ArrayList<>();
list.add(new Employee(111, "AAA", 20000.0));
list.add(new Employee(222, "BBB", 20000.0));
list.add(new Employee(333, "CCC", 20000.0));
list.add(new Employee(444, "DDD", 20000.0));
// Collection은 자체적으로 toString() 오버라이딩 되어져있다.
// Collection안의 데이터를 출력하도록 되어져 있다.
System.out.println(list);
for(Employee e : list)
System.out.println(e);
System.out.println("=== 오름차순 정렬 ===");
Collections.sort(list, new Comparator<Employee>() { //⭐⭐⭐
@Override
public int compare(Employee o1, Employee o2) {
return o1.getEmpno() - o2.getEmpno();
}
});
for(Employee e : list)
System.out.println(e);
System.out.println("=== 내림차순 정렬 ===");
Collections.sort(list, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
return o2.getEmpno() - o1.getEmpno();
}
});
}
}
정렬은 기능이 아니고 여기서 잠깐 사용하는 것이기 때문에 test에서 만든다.
ArrayList 정렬 (오름차순, 내림차순)
정렬하고자 하는 필드를 가지고 있는 클래스에서 정렬 함.
package com.edu.vo;
// 부모 클래스
public class Employee implements Comparable<Employee> {
private String name;
private double salary;
private int empno;
public Employee() {};
public Employee(int empno, String name, double salary) {
this.name = name;
this.salary = salary;
this.empno = empno;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public int getEmpno() {
return empno;
}
// 오름차순 정렬 !
@Override
public int compareTo(Employee e) {
// TODO Auto-generated method stub
return Double.compare(salary, e.getSalary());
// 내림차순 정렬은
// -Double.compare...
}
@Override
public String toString() {
return "Employee [name=" + name + ", salary=" + salary + ", empno=" + empno + "]";
}
}
여기서 먼저 만들어준다..!
public class SortTest3 {
public static void main(String[] args) {
// 알아서 10칸짜리 배열이 만들어지고.. 11명을 추가하려 하면 알아서 다시 10칸이 늘어난다.
ArrayList<Employee> list = new ArrayList<>();
list.add(new Employee(111, "AAA", 20000.0));
list.add(new Employee(222, "BBB", 70000.0));
list.add(new Employee(333, "CCC", 60000.0));
list.add(new Employee(444, "DDD", 40000.0));
System.out.println("정렬 전 => ");
for(Employee e : list) System.out.println(e);
Collections.sort(list); // ⭐⭐⭐ 이렇게 사용 !
System.out.println("정렬 후 => ");
for(Employee e : list) System.out.println(e);
}
}
Team 리팩토링 워크샵
⭐⭐⭐ Jira - 작업방식, 역할, 진행사항 시각적인 공유
Github - 코드 공유, 배포
3명 기능 분담
메소드(기능)이 작업 단위다.
Test에서 확인하는 것 - 어떻게 확인 할 것인지
코드 배포, 공유하는 방법 - 깃허브 팀원끼리 작성 !
Jira → 시각적으로 역할 배분, 작업 진행 상황 check
'풀스택과정' 카테고리의 다른 글
풀스택과정 DB - DBMS | MySQL | 계정/테이블/데이터 넣기 | 기본 CRUD (0) | 2025.05.19 |
---|---|
풀스택과정 Java- Collection API | HashSet | Exception | Abstract Class | 람다식 (1) | 2025.05.19 |
풀스택 과정 3주차 - static, 클래스 변수 | 인터페이스 | Abstract Class (1) | 2025.04.25 |
풀스택과정 3주차 - Homogeneous Collection | Heterogeneous Collection | Polymorphism | Object Casting | Virtual Method Invocation (0) | 2025.04.25 |
풀스택과정 3주차 - CRUD | 상속 (0) | 2025.04.23 |