
생성자 constructor
this와 this()
접근제어자
제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해 줍니다.
-접근 제어자 : public , protected , default , private
-그 외 제어자 : static , final , abstract
하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용할 수 있습니다.
클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default 입니다.
public : 접근 제한이 전혀 없습니다.
protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능합니다
default : [같은 패키지 내]에서만 접근이 가능합니다.
private : [같은 클래스 내]에서만 접근이 가능합니다 (보수적)
사용가능한 접근 제어자
클래스 : public , default
메서드 & 멤버변수 : public , protected , default , private
지역변수 : 없음
캡슐화
접근제어자는 클래스 내부에 선언된 데이터를 보호하기 위해서 사용합니다
값 유지, 접근 제한
생성자의 접근 제어자
생성자의 접근 제어자는 클래스의 접근 제어자와 일치합니다
Getter 와 Setter 무결성을 유지!!!
직접적인 값의 조회 세팅 방지 하기 위해 쓴다
-getter
외부에서 객체의 private 한 필드를 읽을 필요가 있을 때 Getter 메서드를 사용합니다.
-setter
외부에서 객체의 private 한 필드를 저장/수정할 필요가 있을 때 Setter 메서드를 사용합니다.
package와 import
package
클래스의 일부분이며, 하위 패키지를 도토(.)로 구분한다.
import
패키지를 import로 명시
서로 다른 패키지에 있는 같은 이름의 클래스를 동시에 사용하려면 해당 클래스에 패키지 명을 전부 명시
클래스간의 관계와 상속
코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지보수성에 매우 유리
-클래스간의 상속은 extends 키워드를 사용하여 정의
public class 자식클래스 extends 부모클래스 {
}
-부모클래스에서 자식클래스로 단방향으로 진행
-자식클래스는 부모클래스에서 받은 것을을 자유자재로 쓸수 있다.
클래스간의 관계
-상속관계(is) 고래는 포유류 / 스포차카는 자동차
-포함관계(has) 자동차는 타이어, 차문, 핸들을 가지고 있다
다중산속
Java는 다중 상속을 허용하지 않는다.
final 클래스와 final 메서드 -> 변경 할 수 없다!
부모 클래스에 final 클래스는 상속 할 수 없다.
메서드에 final은 오버라이딩 할 수 없는 메소드가 된다.
Object는 최상위 부모 클래스 찾는 메서드
오버라이딩
@ ->애노테이션(annotation) 사용하여 표현
부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것을 오버라이딩이라고 합니다.
-조건
super 와 super()
-> this 인스턴스와 this() 생성자와 관련있음 비슷하게 사용
부모 클래스의 멤버를 참조할 수 있는 키워드
-자식 클래스의 메서드를 호출하면 super 키워드로 접근한 부모 클래스
this 키워드로 접근한 자식 클래스 매개변수 값
다형성
참조변수의 타입변환
자동 타입변환
-부모타입 변수 = 자식타입 객체
자식 객체는 부모 객체의 멤버를 상속받기 때문에 부모와 동일하게 취급
작은타입에서 큰타입으로는 안됨
강제 타입변환
-자식타입 변수 = (자식타입) 부모타입객체;
-자동형변환이 완료된 상태에서 돌아갈수 있는것만 가능함!
다형성이란
‘여러 가지 형태를 가질 수 있는 능력’을 의미합니다
부모타이어 변수 = 자식타이어객체;
instanceof
의도하는 클래스의 객체인지 확인
{대상 객체} instance of {클래스 이름}
추상 클래스
인터페이스
인터페이스는 두 객체를 연결해주는 다리 역할
상속 관계가 없는 다른 클래스들이 서로 동일한 행위
즉, 메서드를 구현해야할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장해 줄 수 있습니다.
-직접 인스턴스를 생성 할수 없음
-implements 키워드를 사용하여 인터페이스를 구현할 수 있습니다.
-추상 메서드는 구현될 때 반드시 오버라이딩
-인터페이스의 추상 메서드를 일부만 구현해야 한다면 해당 클래스를 추상 클래스로 변경해야한다.
-인터페이스간의 상속은 implements 가 아니라 extends 키워드를 사용
-인터페이스는 다중 상속이 가능하다
디폴트 메서드
-추상 메서드의 기본적인 구현을 제공 메서드
-블럭{ }이 존재
-접근 제어자가 public 이며 생략이 가능
-추상 메서드가 아니기 때문에 인터페이스의 구현체들에서 필수로 재정의 할 필요는 없습니다.
static 메서드
-한 객체 없이 호출이 가능
-블럭{ }이 존재
다형성
-자동 타입변환 인터페이스 변수 = 구현객체;
-강제 타입변환 구현객체타입 변수 = (구현객체타입) 인터페이스변수;
📝오늘의 회고
화이팅!!! 모르는 내용 더 찾아서 확인해 봐야 할 것으로 보인다.
오늘도! 쳐지지 말고 포기하지말고 힘내서 가보자고~~~