추상화와 클래스
좋은 클래스) 꼭 필요한 속성 + 행위, 모두 특정 객체와 높은 관련성, 너무 큰 규모의 클래스는 분할할 필요
클래스
클래스는 객체 생성을 위한 설계도 → 어떤 속성과 행위를 포함할 것인지의 정보를 포함
class 키워드를 사용하고 멤버로 변수와 메소드를 포함
클래스의 이름은 대문자로 시작, 명사 형태의 의미 있는 이름
new 키워드로 객체를 생성하여 참조 정보를 변수에 저장
객체 참조 변수의 점 연산자를 사용하여 객체의 멤버에 접근 가능
메소드
객체 = 속성 + 행위(메소드)
메소드는 객체 내부에서만 존재하고, 객체의 행위를 정의함
접근제어자
캡슐화(Encapsulation)
- 객체의 속성과 행동을 하나의 단위로 그룹화
- 객체의 속성과 행동을 은닉: 반드시 필요한 속성 및 행동만 외부에 노출
클래스, 멤버 변수, 메소드에 활용(private, public)
메소드의 리턴 값과 파라미터
setter - 데이터 값을 넣을 수 있다(추가적인 검증 로직 추가 가능)
argument(인자) — 메소드에 전달하는 데이터(값)
파라미터 - 전달 받는 인자 값을 저장하는 매개 변수
메소드는 수행 결과를 리턴하고 종료
getter - 멤버 변수의 값을 반환하는 메소드 추가
객체지향 고급—다형성의 이해
Java의 타입 체킹: 자바는 타입 간의 호환에 매우 엄격하다. 기본적으로 서로 다른 타입의 객체를 참조할 수 없음.
단 부모클래스는 자식클래스를 타입에 관계없이 참조 가능
User luke = new PaidUser();
// 부모 = new 자식();
다형성 — 객체지향의 주요 특성
동일한 사물이 때에 따라 동일한 기능을 하는 것
다양한 형태를 가질 수 있는 성질
특정 타입의 참조 변수가 때에 따라 다양한 객체를 참조
객체지향 고급 — 패키지 이해
Fully Qualified Class Name → FQCN 패키지명 + 클래스명
default, protected 접근 제어자 → 같은 패키지 내에서 접근 가능, 다른 패키지에서는 접근 불가
컬렉션 프레임워크
java.util.Collection<E> 인터페이스 — List, Set
java.util.Map<K, V> 인터페이스
java.util.List<E> 인터페이스 — 순서가 있는 데이터의 집합, 데이터의 중복을 허용
제네릭과 컬렉션 프레임워크
class ClassName<T>{멤버 변수, 메소드}
<T> : 클래스 내부에서 사용될 임의의 데이터 타입을 ‘T’라는 type variable로 지정
public class MyGeneric<t>{
T member;
public void setMember(T member){
this.member = member;
}
public T getMember(){
return member;
}
}
장점: 클래스 내 임의의 변수를 매번 다른 데이터 타입으로 지정하여 객체 생성 가능(범용성)
List 자료구조 컬렉션 클래스에 대한 이해
Arraylist<E> — Array와 가장 유사한 컬렉션 클래스
.add(E e); — 데이터를 추가 가능
.add(int index, E e) — 원하는 위치에 데이터 추가 가능
.addall(int index, 콜렉션>
코드프레소 Java 웹 개발 체험단 활동 중(https://www.codepresso.kr/)
'Codepresso' 카테고리의 다른 글
처음 시작하는 SQL 프로그래밍 강의노트(2) (0) | 2022.03.03 |
---|---|
SW 유지보수성 향상을 위한 Clean Code 강의노트 (0) | 2022.02.09 |
MySQL 입문 강의노트 (0) | 2022.02.08 |
Spring Boot 웹 개발 입문 강의노트 (0) | 2022.02.08 |
[실무자가 알려주는 Git 활용한 프로젝트 관리] 강의 노트 (0) | 2022.01.18 |