My footsteps

객체 본문

예습/이론

객체

밀김 2023. 1. 3. 14:03
728x90

 

 

 

 

 

- 객체식

  클래스명 변수명;

  변수명 = new 클래스명( );

 

Tv t; // 참조변수 t를 선언한다. Tv를 작동하기 위해선 리모컨이 필요하니까 t가 리모컨인셈

t = new Tv ( ); // Tv라는 객체와 참조변수 t인 리모컨을 연결(=)해준다

 

이 식을 한줄로 쓰면

Tv t = new Tv( );

 

 

- 클래스 작성(설계도) > 객체생성(제품) > 객체사용

 

- 객체의 사용

t. channel= 7 ;  // 티비인스턴스의 멤버변수 채널1의 값을 7로 한다

t. channelDown();  // 티비인스턴스의 매서드 채널다운을 호출한다

Sop("현재 채널은" + t.channel + "입니다.");

 

 

 

 


Tv t;
t = new Tv(); // new에 객체 주소가 담김

Tv t;
t = new Tv();  // 두개 타입이 꼭 일치해야함

 

 

- 클래스(=설계도) 변수3개와 매서드3개로 이루어져있다

 

 

- 그래서 총 6개의 구성요소가 생성 (흰색이 변수/회색이 매서드)

 

- 변수는 값을 입력하거나 대입하면 되고 매서드는 호출하면 된다

 

- 참조변수가 없으면 절대 객체를 사용할수없다

 

- 하나의 참조변수는 절대 두개의 객체를 제어할수없다. 하나당 하나씩만

 

 

https://youtu.be/p1ZZnM715ao?t=1147 

19분부터 이해안가면 다시 보기!!!중요+그림잘보기

- 객체배열 == 참조변수 배열

(객체배열) Tv tv1, tv2, tv3; // Tv타입 객체들 → (참조변수배열) Tv[] tvArr = new Tv[3]; // Tv타입 참조변수의 길이는3

 

- 객체를 생성해서 배열의 각 요소에 저장. 이 옮기는 작업을 꼭 해줘야 에러가 안남!!

tvArr[0] = new Tv();

tvArr[1] = new Tv();

tvArr[2] = new Tv();

 

new Tv[3] 는 객체배열. [3]은 tv타입 참조변수x3

 

 

 

 

 

 

- 클래스 == 데이터+함수

 

- 함수는 명령문을 묶음이고, 어떤 작업이나 계산을 할때 데이터를 갖고 작업을 하니까 데이터(=클래스)와 같이 묶어둔다.

 

 

 

- 클래스를 사용자 정의 타입으로 자신이 원하고 필요하게 만들면 코드가 간결해져서 좋다

 

 

 

- 클래스영역 : iv,cv(static변수+iv) / 매서드 영역: lv

 

- 클래스 영역에는 선언문만 쓰기 가능하다 (대입연산자나 sop는 기재 불가능)

 

 

 

- 객체: iv를 묶어놓은것 / cv: 객체생성 필요없음. 자동생성(아무때나사용가능) / iv: 객체생성 필요함(객체만들어야 사용가능,매서드 종료시 자동제거) / lv : 지역변수

 

 

 

iv=개별 / cv=공통

 

- 매서드란? : 문장들을 묶어놓은것  , 코드 간결화에 도움 , 하나의 매서드는 한가지 기능만 수행하도록 작성해야함

 


매서드 = 선언부 + 구현부

반환타입 매서드이름 (타입 변수명, 타입 변수명....)   ▶ 선언부
{                                                                               }   ▶ 구현부

int add (int a, int b...)    ▶ 선언부
{ int result = a+b; 
  return result; }     ▶ 구현부

* 입력값은 0~n개까지 가능하지만 출력은 오로지 0개나 1개만 가능하다
* 출력값이 0일때는 선언부에서 반환타입(int)부분을 void라고 적어줘야한다!!


 

 

- 지역변수 :  매서드 영역내에 선언된 변수 

- 매개변수 : 입력값을 받는 변수

 

매서드가 총 두갠데 변수 이름이(x,y,result가 같아도 상관없는 이유는, 매서드가 종료되는 즉시 바로 삭제되기 때문에 저렇게만 따로 구분해서 적어놓으면 변수이름같아도 노상관

 

 

 

- 매서드호출 : 매서드이름(값1,값2...) ex) int add(3,5) // int는 add의값을 어떤형식으로 반환할지 적어둔것

 

 

 

 

 


*매서드의 실행 흐름

MyMath mm = new MyMath();  // 인스턴스 생성. 
long value = mm.add(1L,2L);  // 매서드 호출. add 더한다는 수식
long add(long a, long b) {  // 1L,2L값이 각각 a,b에 저장됨
              long result = a + b;
              return result;
              }

결과값 3이 value에 저장된다

 

 

- 반환타입이 void가 아닌경우 매서드에서는 반드시 reurn문이 필요하다.

 

- return문은 참일때만 실행된다. 거짓일때는 실행되지 않아서, 리턴문이 없다고 에러가 나는데 그럴때를 대비해 false의 리턴문도 만들어야한다

 

 

 

 

- 앞에 타입들이 일치할수 있도록 주의!

 

 

- 호출스택 : 매서드 수행에 필요한 메모리가 제공되는 공간. 매서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제

 

 

호출스택의 구조

 

 

 

 

 

 

 

 

 

 

728x90