자바의 정석 복습(객체지향)

bitna's study note·2022년 5월 31일
0

자바

목록 보기
95/119

5월 31일 복습하기

1.클래스변수와 인스턴스변수
인스턴스의 공통적인 속성 (예, 카드의 폭과 높이)은 클래스변수(cv)로 설정을 하고, 개별적인 속성(예, 카드의 모양과 숫자)는 인스턴스변수(iv)로 설정한다.
그래서 객체마다 공통적인 속성을 공유하고싶을때 static변수인 cv로 선언한다.
cv를 사용할때 변수명.필드이름 이 아니라 예)c.width X 안됨!!!
변수타입클래스.필드이름 으로 적어줘야함 예)Card.width 또는 Card.height 로써야함

2.메서드란?
(1)코딩을 할때 코드의 중복을 매우 안좋게 본다.
코드의 중복을 없애기 위해 중복된 코드를 블럭으로 묶어서 이름을 만들어준걸 '메서드' 라고 하며, 사용시 메서드를 호출하면 됨 '메서드명(매개변수명);'.

(2)메서드 만들기
반환타입 or void 메서드명(매개타입 매개변수....){...내용...}

(3)메서드의 장점은 중복코드제거, 한곳에서 관리하기때문에 관이용이,재사용가능, 코드의 간결화...등이 있다.

(4)메서드의 반환타입은 작업의 결과의 타입을 지정하는건데, 결과물은 0~1개가 나옴,
이때 더 많은 결과물이 나온다고 하면 객체로 묶어서 주거나 배열로 묶어서 주는데, 메일에 첨부파일이 여러개 있을때 하나로 압축해서 주듯이 그렇게 주는걸 객체나 배열로 반환하는것이다.

(5)반환타입이 없을때는 void로 반환타입 선언

(6)매개변수도 지역변수이다.

3.메서드 호출
메서드이름(매서드가 작업할때 필요한값1,값2...)

4.return문
실행 중인 메서드를 종료하고 호출한 곳으로 되돌아 간다.
return문이 결과값을 가지고 되돌아 가기도 하지만 메서드안에 조건문을 걸어 조건문에 해당되면 아래작업을 하기도전에 호출한곳으로 되돌아가기도 한다.
반환타입이 void가 아닌경우 반드시 return문을 써줘야한다.
왜냐면 어떤값을 반환할지를 알려줘야하기때문

5.반환값
반환값은 반환타입과 일치해야되고, 반환값을 담는 변수타입과도 일치해야함

6.호출스택
스택: 밑이 막힌 상자.위에 차곡차곡 쌓인다.
호출스택은 메서드 수행에 필요한 메모리가 제공되는 공간
메서드가 호출되면 호출스택에 메모리가할당되고 작업이 끝나면 메모리에서 사라진다.

7.매개변수
매개변수는 기본형과 참조형이 있다.
(1)기본형 매개변수: 변수의 값을 읽기만 가능하다.(8개 타입)
(2)참조형 매개변수: 변수의 값을 읽고 쓰기가 가능하다.

8.기본형 매개변수
위에 식을 보면 객체를 생성하고 대입한 d.x와
change안에 있는 x는 같은 x같아보이지만 다른 존재임
d.x는 객체안에 있는 인스턴스 변수이고, change안에 있는 x는 메서드안에 있는 지역변수 이기 때문에 메서드안에서만 활동하고 메서드밖에서는 영향 못줌


9. 참조형 매개변수
참조형 매개변수는 변수안에 담기 값이 아니라 주소값을 통째로 넘겨 받기 때문에 읽고쓰기가 가능함
Data2 d = new Data2();의 객체의 참조변수에 d가 change안의 매개변수로 들어가면서 객체의 주소값이 담기고 d.x를 찾아가 값을 변경 할수 있음.

기본형과 참조형의 차이는 d.x는 원래 객체의 멤버임
기본형은 객체에 영향을 줄수 없음 d.x의 주소를 몰라 객체를 못찾아가기때문, 그러나 참조형 변수는 객체의 주소를 알고 있어 찾아가서 바꿔줄수있음. 참조형 매개변수는 객체의 주소를 그대로 복사하기 때문,리모콘을 통째로 넘겨주기때문에 읽고/쓰기가 가능하다.

10.참조형 반환타입
반환타입이 참조형 일때는 객체의 주소를 반환한다.
메서드의 반환타입이 참조형이면, 그 결과값을 저장하는 변수도 참조형 이어야한다.
(1)new Data3();는 객체 생성 참조변수d는 객체의 주소값반환
(2)참조변수d가 가르키고 있는 객체의 x필드값에 10 저장
(3)copy(d)는 Data3의 참조변수, 참조변수의 주소값이 복사되어
copy메서드의 매개값에 주소값이 복사됨
(4)메서드안에 new Data3();는 또다른 객체생성 참조변수는 tmp이며, 또다른 객체의 주소값을 저장됨.
(5)d.x에 저장된 10이 대입되어 tmp.x로 값 복사
(이때 메서드안에 d.x는 main에 d.x와 각각다른 변수이지만 new Data3객체의 주소값을 저장하고있음.
왜 각각 다른 변수?? 메서드안에 있는 변수는 지역변수 main에 있는 변수는 클래스변수임. 그래서 다르다!!!!)
(6)return tmp로 주소값을 호출한곳으로 넘겨주고 메모리에서 copy메서드 사라짐
(7)tmp에 저장된 주소값은 d2로 주소값 넘겨받음
(8)sysout으로 각각 출력 함.

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보