- 패키지
- 비슷한 기능의 클래스를 그룹화 시킨 디렉토리
- 다른 패키지 클래스에 접근하기 위해서는 import를 사용해야 한다.
- ex) import org.java.MemberDto; ← 클래스만 import
- ex) import org.java.dto.*; ← org.java.dto 패키지에 있는 모든 클래스를 import
- 이클립스는 자동으로 import를 해준다
- 패키지를 생성하지 않을 시 (클래스는) default package에 자동으로 저장된다.
- 갯수가 정해지지 않는 객체는 Collection을 이용해서 저장한다.
- 자바의 기본 패키지(java.lang)는 import를 안해도 자동으로 인식한다.
-
상속이란?
- “부모(슈퍼)클래스의 멤버(필드, 매서드)를 자식(서브)클래스에 물려주는 것”
- 클래스간의 단일 상속만 가능
- 자식클래스의 멤버의 수는 반드시 부모클래스보다 크거나 같다
- 자식클래스 extends 부모클래스의 형태로 선언
- 모든 생성자를 상속하지는 않는다
- 상속시 기본생성자는 자식생성자 첫번째 줄에 자동으로 생성해준다
- 상속시 부모클래스의 생성자는 자식클래스의 첫번째 줄에
- 자식클래스가 부모의 생성자를 선택 할 수 있다.
- 자식생성자의 첫번째 줄에서 super(), super(a)…
- 부모클래스 = 슈퍼클래스, 자식클래스 = 서브클래스
- final 클래스는 상속할 수 없다 ← 추가하기.
- Object클래스는 자바의 모든 클래스의 슈퍼클래스다.
-
자바 상속의 특징
- 자바클래스 다중상속 허용하지 않는다
- 자바 인터페이스(interface)의 다중 상속 허용
- 모든 자바 클래스는 묵시적으로 object클래스 상속받음
- java.lang.Object
- 오버라이드(or 오버라이딩, Override)
- 상속관계에서 부모의 매서드를 자식객체에서 재정의 사용 → 다양성 → 재사용
- 매서드 선언부가 똑같다
- 매서드 구현부를 재정의하는 방식
- @override 어노테이션 이용해서 오버라이드 되었음을 알려준다
- 어노테이션
@Override
매서드(){
{
- @
- 주석
- 자바에서는 어떤 특정 기능을 수행되도록 미리 정의하고 해당 코드 바로 위에 작성하면, 특정 기능이 수행된다.
- 오버라이드 된 매서드는 자식매서드가 구현
- 단, super 키워드를 사용하면 부모매서드도 구현 가능
- 자식 클래스에서 오버라이드 매서드를 구현할 때, 자동 설정 가능.
-
다형성(Polymorphism)
- 하나의 역할이 여러가지 기능을 수행하는 방식
- 오버로딩 → 같은 이름의 매서드
- 오버라이딩 → 부모의 매서드를 상속 받아서 구현
- 부모 타입의 객체 참조 변수로 자식 객체를 참조 할 수 있다. (상속관계)
-
어노테이션
임플리멘트(implement)
Object 클래스 ← 모든 클래스의 부모 클래스.
CRUD = Create, Read, Update, Delete
Dto → DB에 연관된
Dao → DB에 접근해서 DB관련 CRUD 처리
Controller → 일을 시키는
Service → 시킨 일을 하는. 기본이 CRUD → Dao에 시킨다
-
MVC→Model View Controller
- 대표적인 프로그래밍 방식
- Client → 요청 → Server (Controller ↔ Model ↔ DB)
↘view
-
MVC → Model1, Model2
-
MVC Model2
-
Framework → Spring → Spring Framework, Spring Boot, Spring Security
-
다형성(Polymorphism)
- 부모 타입의 객체참조 변수로 여러 자식객체(인스턴스)를 참조 할 수 있다.
- 하나의 매서드나 객체가 다양한 기능을 구현 할 수 있는 것 → 오버라이딩
- 장점 : 유지보수가 쉽다. 재사용
-
추상클래스(abstract)
class A{
abstract public void m1();
}
- 추상매서드가 있는 클래스 → 추상매서드는 반드시(강제) 구현
- 추상매서드는 미완성 매서드(선언부만 있고 구현부가 없다
- 반드시 상속을 통해서 추상매서드를 구현한다.
- 객체를 생성하지 못한다.
- new x
- 익명(anonymous)클래스를 통해서 오버라이딩 할 수 있다.
- 추상클래스 상속을 통해서 구현객체에 적용하는 방법
- 상속을 통해서 구현객체를 만들고, 추상매서드를 구현 → implement(오버라이딩)
- 상속을 통해서 구현객체를 만들고, 새로운 추상클래스로 만든다. → unimplement, 다시 추상클래스만듬
- 클래스이다. → 일반 필드나, 일반 매서드를 멤버로 구성할 수 있다.
- 다른 클래스에 도움이 되기 위한 클래스
-
추상클래스 (재차 설명, 다른 노트에서 발췌)
-
추상매서드가 있는 클래스(미완성, 공통, abstract)
-
객체를 생성하지 못한다(new) → 구현 클래스가 필요
-
멤버(일반클래스 멤버+추상매서드)
-
다른 클래스에게 도움을 주기 위한 클래스(강제성)
-
상속을 통해서 반드시 추상매서드를 오버라이드해서 구현한다 → implement
-
구현 객체를 통해서 구현한다
-
추상클래스 상속시(클래스의 유형을 선택)***
- 추상클래스로 설정(다시 추상클래스화)
- 일반클래스에서 추상매서드를 오버라이드 설정
-
단일 상속만 허용
실제 프로젝트에서는 추상매서드를 이용해서 강제성→상속을 통해서 매서드를 오버라이딩