[커널아카데미] 백엔드 12기 2주차 - 자바_배열,객체지향1

jh5959·2025년 4월 6일
0

ch5 배열

배열: 같은 타입의 여러 변수를 하나의 묶음으로 다룸
많은 양의 데이터를 손쉽게 다루기 위해 사용

  • R W
  • 저장공간 x n개 (0~n개)
  • 객체
  • 크기 변경 X
    - 새로 만들기
    • 기존 내용 복사
  • 모두 같은 타입

배열 선언이 가능한 문장

int [] arr[];
int [] arr = {1,2,3,}
int [] arr = new int[5]
int [] arr[] = new int[3][]

다차원 배열의 모든 요소의 값 구하기
- arr.length*arr[0].length

ch6 객체지향1

객체지향 언어

oop = 그룹 & 관계 ->변경유리
객체지향개념 목표 = 프로그램 변경 쉽게
기존 프로그래밍 + 몇가지 규칙 = 변경 쉽게 하기 위해

클래스와 객체

클래스 = 집합(객체를 정의한 것)
관련된 것 묶기 => 더 큰 단위 => 복잡도 낮춤
=> 더 복잡한 것을 만들기 위해서

객체: 속성과 기능 = 멤버(iv,인스턴스 변수)의 집합
관찰 - 분석 - 설계&구현
인스턴스는 참조변수를 통해서만 다룰 수 있다
참조변수 타입 = 인스턴스 타입

객체 생성

  • 클래스명 변수명;
  • 변수명 = new 클래스명();
    ex) Tv t = new Tv();

클래스의 의미(그룹,폴더)

  • 설계도
  • 변수 + 메서드(문장묶음)
  • 사용자 지정 타입

객체지향의 4대원칙

  • 캡슐화: 접근제어자로 데이터 보호, 외부로부터 내부를 감춤
  • 상속: 기존 클래스를 확장해서 새로운 클래스를 작성하는 것
  • 추상화: 공통점을 뽑아내는 것, 덜 구체적으로 만들기
  • 다형성: 조상 참조변수로 여러 종류의 자손 객체를 다루게 하는 것

변수와 메서드

변수

  • 클래스 변수 cv
  • 인스턴스 변수 iv
  • 지역 변수 lv

클래스 영역: iv,cv(static+uv),선언문만 가능
메서드 영역: lv

인스턴스 변수: 인스턴스 마다 개별 저장 공간 ex) 카드에서 숫자와 모양, 객체 생성될 때 생성
클래스 변수: 모든 인스턴스가 공유, 인스턴스의 공통적인 값 ex)카드의 길이, 폭
클래스 변수를 변경하면 객체의 모든 클래스 변수의 값이 같이 변경된다

메서드: 문장묶음, 선언부 + 구현부(선언부 중요, 바뀌면 안됨)

  • 재사용성
  • 중복코드제거
  • 프로그램 구조화

return문: 메서드의 실행 결과를 호출한 쪽에 변환하는 문장

  • 메서드가 계산한 결과를 돌려주기 위해 사용

  • 메서드 블럭 내에서 사용 return 값;

  • void 생략 가능, 아니라면 return이 꼭 있어야 함

  • void return; 없어도 가능 필요시 return만 써서 조기 종료할 수 있음

  • 반환값의 데이터 타입은 메서드 선언부의 반환형과 일치해야 한다

if(a<b)
	return a;
else
	return b;

기본형 매개변수

  • 읽기만 가능

참조형 매개변수

  • 읽기 쓰기 가능
  • 객체의 주소를 넘겨줄 수 있어서 읽고 쓰기가 가능

참조형 반환타입

  • 객체의 주소를 반환함 객체주소 = 정수
  • 메서드와 반환받는 타입이 참조형으로 일치해야 한다
    => copy(d) 참조변수없이 호출 가능

인스턴스 메서드와 static 메서드의 가장 큰 차이 = iv를 쓰냐 안쓰냐가 핵심
=> 인스턴스 메서드 iv 사용O, static 메서드 iv 사용X
static 메서드는 인스턴스 메서드 호출 X

public 클래스 이름 = 소스파일 이름
main 메서드가 있는 클래스이름 = 소스파일 이름

오버로딩

오버로딩: 같은 이름의 메서드를 여러개 정의하는 것
장점

  • 쓰기 편함
  • 변경유리

오버로딩의 조건

  • 메서드 이름이 같아야 함
  • 매개변수의 개수 또는 타입이 달라야함
  • 반환타입은 영향 X

생성자

생성자 - 인스턴스 초기화 메서드. iv를 초기화, 조립방법
생성자의 조건
1.이름이 클래스와 동일
2.반환타입 없음(void안씀)
3.다른 생성자 호츨은 반드시 첫줄에서
4.다른 생성자 호출시 this()

기본생성자: 반드시 있어야 함(없으면 컴파일러가 자동추가) , 직접 만드는게 좋음

  • Time() 생성자 호출
  • 클래스이름() { } : 기본 생성자 { }안에 값이 없다
  • Time() { } //Time 클래스의 기본 생성자

this: 참조변수, 객체(인스턴스)자신을 가르킴, this.iv , lv랑 iv를 구분하기 위해
this(): 생성자
this 랑 this() 다르다

변수의 초기화

변수 초기화 순서

  • cv -> iv
  • 자동(0)- 간단(=) - 복잡(초기화 블럭, 생성자)

자동: cv -> iv
간단: lv
복잡: static { }, ( { } , 생성자(인스턴스변수) )

주간회고

  • 객체지향의 개념은 계속보고 실습을 하면서 익숙해져야겠다
  • 연습문제를 풀고 여러문 푸는게 좋을 것 같다
  • 잠을 잘 못자는데 운동을 해야겠다

0개의 댓글