이번주부터 주간학습 회고를 주말에 진행해보려고 한다.
무리하지 않기 위해서 주말엔 공부를 많이 하지 않았지만
복습을 할 시간이 부족한 거 같아 앞으로는 한 주 동안 공부한 내용을 복습 겸 블로깅할 생각이다.
7월 4주는 일정이 있어, 20-21일은 많은 공부를 하지 못한 게 아쉽다.
#객체지향프로그래밍
1. 객체지향프로그래밍
- 프로그래밍에서 각각의 속성과 기능을 가진 객체단위로 나눠 프로그래밍하는 방법이다.
- 프로그램 개발 및 유지 보수에 용이하다.
- 객체지향프로그래밍의 특징은 캡슐화, 상속, 다형성이 있다.
#클래스와 객체
- 클래스는 객체를 만드는 설계도, 틀이다.
- 객체는 클래스에 정의된대로 생성된다.
- 인스턴스는 클래스에 의해 생성된 객체를 말한다. (객체 생성 과정을 인스턴스화라고 부른다.)
- 클래스의 구성 요소 (필드, 메서드, 생성자)
public class Blog { // 클래스
private String blogName; // 필드
private int visitorCount; // 필드
Blog(String blogName, int visitorCount) { // 생성자
this.blogName = Pilgrim;
this.visitorCount = 1;
}
public String getVisitorCount() { // 메서드
return this.blogName + "의 방문자 수는 " + this.visitorCount + "명 입니다."
}
}
- 필드는 클래스의 속성을 표현한다.
- 메서드는 클래스의 기능을 표현한다.
- 객체는 필드와 메서드로 정의되고, 객체의 멤버는 필드, 메서드, 이너클래스이다.
- 객체는 클래스의 속성을 정의할 수도, 기능을 정의할 수도 있다.
- 객체는 여러 개의 속성과 기능을 가질 수 있다.
- 생성된 객체의 멤버의 접근은 포인트 연산자(.)를 통해 가능하다.
#필드
- 클래스에 포함된 변수를 의미. 객체의 속성을 정의할 때 사용.
- 변수의 종류
(1) 클래스 변수 : 메서드 메모리 위치. 자동초기화. static 사용.
(2) 인스턴스 변수 : 힙 메모리 위치. 자동초기화.
(3) 지역 변수 : 스택 메모리 위치. 수동초기화필수. static 사용.
#static
- 필드와 메소드에 static을 사용하면 정적 멤버가 된다.
- 정적 멤버는 모든 객체가 공유할 수 있다.
- 프로그램 종료시까지 메모리가 할당되어 있다.
#메서드
- 클래스의 기능을 담당하는 코드 집합.
- 구조
(1) 메서드 시그니쳐 : 메서드의 성질에 관한 정보들(반환 타입, 메서드명, 매겨 변수 정보)
(2) 메서드 바디 : 실행 코드
#메서드 오버로딩
- 하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것.
- 메서드의 이름은 같되, 매개변수의 개수 또는 타입이 달라야 한다.
#생성자
- 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드.
- 오버로딩이 가능.
- 생성자가 없는 클래스에는 자동으로 기본 생성자가 추가된다.
#this와 this()
(1) this() 메서드
- 생성자를 상호 호출할 때 사용 (클래스에 속해있지 않은 다른 생성자 호출)
- 생성자의 첫 줄에 위치. 생성자 내부에서만 사용 가능.
(2) this 참조 변수
- 인스턴스가 자기 자신을 참조할 때 사용.
- 참조 변수로서 해당 인스턴스의 주소를 가리킨다.
- 인스턴스 변수와 매개 변수를 구분하기 위해 사용.
#내부클래스
- 내부 클래스의 종류
(1) 인스턴스 클래스: 객체 내부에 멤버 형태로 존재하는 내부 클래스
(2) 정적 내부 클래스: 정적 변수를 사용한 내부 클래스.
(3) 지역 클래스: 메서드 내부에서만 사용 가능한 클래스.
#상속
- 기존 클래스에 기능을 추가하거나 재정의한 새로운 클래스를 작성하는 것.
- 상위 클래스의 멤버를 하위 클래스와 공유 가능
- 하위 클래스의 멤버수는 항상 상위클래스의 멤버수보다 많거나 같다.
- 다형적 표현 가능 / 상위 클래스 메서드 하위 클래스에서 사용 가능
- 단일 상속만 가능
#포함관계
- 코드의 중복을 없애기 위해 A클래스 내의 공통으로 가지고 있는 변수를 C 클래스의 변수로 선언한 뒤,
#메서드 오버라이딩
- 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의 하는 것.
- 메서드 오버라이딩의 조건
(1) 두 메서드의 선언부가 일치
(2) 상위 클래스의 접근 제어자의 범위가 하위 클래스보다 넓거나 같음.
(3) 상위 클래스보다 예외 선언이 적음.
- 메서드 오버로딩과의 차이
(1) 오버로딩은 한 클래스 내에서 여러 개의 같은 이름의 메소드를 정의하는 것을 말함.
(2) 오버라이딩은 상속받은 메소드의 기능을 재정의하는 것을 말한다.
#super와 super()
- 상속 관계인 상위 클래스가 있을 때 사용가능
- 상속관계인 두 클래스에 같은 이름의 변수가 있을 때, super클 사용해 참조할 변수를 선택 가능하다.
(1) super: 상위 클래스의 객체를 호출
(2) super(): 상위 클래스의 생성자를 호출
#Object 클래스
- 모든 클래스가 상속받는 최상위 클래스. 필드 없이 11개의 메소드만으로 이루어져 있다.
- 아무런 상속을 받지 않는 클래스는 자동으로 오브젝트클래스를 상속받는다.
- 따라서 모든 클래스는 Object 클래스의 메소드를 사용할 수 있다.
아직 갈 길이 머니 조금 더 빨리 달려보자..!!
'개발지 > 회고' 카테고리의 다른 글
23년 코테 문제 회고 (0) | 2023.12.26 |
---|---|
[0814] 8월 2주 주간학습 회고 (8/7~8/10) (0) | 2023.08.14 |
[0808] 8월 1주 주간학습 회고 (0731) (0) | 2023.08.08 |
[0730] 7월 5주 주간학습 회고 (0) | 2023.07.31 |