배열이란?
같은 데이터 타입의 변수들이 하나의 집합 형태로 이루어진 자료구조
배열은 index와 element로 구성됨.
Arrays는 java에서 지원해주는 기본 클래스임.
다차원 배열
2차원 배열은?
배열의 요소로 1차원 배열을 가지는 요소
가변 배열(Dynamic Array)
2차원 배열 중 각 행마다 다른 길이를 갖는 배열
배열의 활용
객체 지향 프로그램 (oop)란?
문제 혹은 로직을 객체 단위로 나눠서 작성하는 방법
- 절차지향 프로그래밍과 반대의 개념이 아님
객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론
- Java, C#등이 대표적인 객체지향 프로그래밍 언어
예시) 자동차(객체) = 데이터(바퀴,핸들,차체 등)+ 기능 (주행보조기능,길찾기)
OOP의 특징
캡슐화 : 데이터의 구조와 기능을 하나의 캡슐형태로 만들어 외부에서는 형태를 알 수 없도록 하는 방법
추상화 : 객체의 공통적인 필드와 기능을 하나의 형태로 정의하는 설계 방법
상속 : 하위 클래스 자체에 새로운 기능을 추가할 수 있는 것
다형성 : 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 형태로 재구성되는 것 (오버로딩/ 오버라이딩)
OOP의 장점
1. 코드 재사용성 증가
2. 생산성 향상
3. 유지보수가 쉬움
OOP의 단점
1. 개발 속도가 느림
2. 실행 속도가 느림
3. 코드의 난이도가 상승
클래스와 객체
클래스 정의
1. 객체의 설계도
2. 사용자 정의 타입
3. 데이터와 기능의 결합
클래스 용도
1. 객체를 생성하는 용도
객체 정의 : 클래스의 정의된 내용에 맞춰 메모리에 생성된 형태
객체 용도 : 정의한 클래스 내용에 따라 속성과 기능이 다름
변수 초기화
변수를 선언하고 최초로 값을 지정하는 것
1. 멤버변수(클래스 변수, 인스턴스 변수)는 초기화 생략 가능
2. 지역변수는 반드시 초기화 해줘야 함.
멤버 변수 초기화 하는 방법
1. 명시적 초기화
2. 초기화 블록
3. 생성자
생성자(constructor)란?
new키워드로 인스턴스를 생성할 때, 제일 먼저 실행되는 메소드
1. 클래스의 이름과 동일한 이름이어야 함.
2. 반환 값은 없지만 void 형으로 적어주면 안됨.
3. 기본 생성자 외에 여러 개의 생성자를 가질 수 있음.
기본 생성자
매개변수가 없고, 어떤 실행문도 없는 생성자
1. 모든 클래스에는 반드시 하나 이상의 생성자가 정의
2. Java complier가 어떤 생성자도 없을 때 기본적으로 추가해줌.
3. 어떤 생성자가 있으면, complier가 기본 생성자는 별도로 추가하지 않음.
매개변수가 있는 생성자
메서드처럼 매개변수를 인자로 받아 인스턴스 초기화에 값을 사용할 수 있는 생성자
- 인스턴스 생성 후 ,set메소드를 호출해주는 것보다 간결한 코드
매서드란?
어떤 특정한 기능을 수행하기 위한 명령문들의 집합체
주로 선언부와 구현부로 나뉨
매개변수의 종류
메서드에서 넘겨받는 매개변수의 종류는 크게 두가지
1. 기본형 매개변수 : 기본 데이터형으로 넘겨 받는 매개변수, 읽기만 가능
2. 참조형 매개변수 : 인스턴스의 주소를 넘겨 받는 매개변수, 읽고 변경 가능
호출 스택
메소드의 작업에 필요한 메모리 공간 제공
- 메소드가 작업을 수행하는 동안 지역변수들과 연산의 중간결과 등을 저장하는데 사용
- 메소드가 작업을 마치면 할당되었던 메모리는 반환
- 호출 스택 제일 상위에 위치하는 메소드가 현재 실행 중인 메소드, 나머지는 대기
- 객체를 생성하지 않고 호출하기 위해서는 static keyword
오버로딩이란?
한 클래스에 같은 메소드 이름으로 여러 메소드를 정의하는 것
1. 메소드의 매개변수의 수 혹은 타입이 달라야 함
2. 반환 타입은 상관 없음
오버로딩과 가변인자
메소드의 매개변수를 동적으로 지정할 수 있는 기능(>=JDK1.5)
- 가변인자의 선언 : 데이터타입... 변수명
- 가변인자는 메소드 매개변수의 마지막에 선언해줘야 함
- 가변인자를 선언한 메서드는 되도록 오버로딩 하지 않는 것이 좋음
상속(inheritance)란?
기존 클래스를 확장하여 새로운 클래스를 작성하는 기법
- 새로운 클래스 뒤에 extends 와 확장할 클래스를 적어서 표현
- Ex) class laptop extends computer
- 자식클래스는 부모클래스의 모든 멤버를 상속(생성자, 초기화 블록 제외)
- 같은 내용의 코드를 한곳에서 관리함으로써 코드의 중복이 줄어듦
- 단일 상속만 가능
클래스 간 관계
상속 관계 : is - a 관계
- 사람을 개발자이다 x
- 개발자는 사람이다 o
- 사람 : 부모클래스 - 개발자 : 자식클래스
포함 관계 : has - a 관계
한 클래스를 다른 클래스의 참조변수로 사용하는 경우
오버라이딩(overriding)이란?
부모클래스로부터 상속받은 메서드의 내용을 변경하는 것
- 이름, 매개변수, 반환 타입이 같아야 함
- 접근제어자를 부모보다 좁은 범위로 할 수 없음 즉, 부모>자식
- 부모 클래스의 메서드보다 많은 수의 예외를 선언할 수 없음
- 인스턴스 메서드를 static제어자로 바꿀 수 없음
'하지의 코딩일지 > STUDY MEMO[BACKEND]' 카테고리의 다른 글
코딩일지 25일차 - 컴퓨터 구조, 알고리즘 (0) | 2023.06.30 |
---|---|
코딩일지 -24일차 수학 (0) | 2023.06.28 |
코딩 일지 22일차 - 연산자, 조건문, 반복문, 기타 제어문 (0) | 2023.06.26 |
코딩일지 8일차 (0) | 2023.06.19 |
코딩 일지 7일차 (0) | 2023.06.13 |