본문 바로가기
728x90
반응형

객체지향35

18) 객체지향-생성자 this(), 참조변수 this 18-1) 생성자 this() -생성자에서 다른 생성자 호출할 때 사용 Car()의 생성자가 3개 있습니다. 1, 2 생성자가 3번째 생성자를 호출한 것입니다. 원래의 형태는 Car("white",auto",4)가 맞는데, Car를 쓰지 않고 this로 씁니다. 그냥 규칙입니다. 외우세요. this생성자의 실제 의미는 Car(String color, String gearType, int door)를 호출하라는 소리입니다. 18-2) 생성자 호출 시 주의사항 -다른 생성자 호출시 첫 줄에서만 사용 가능 Car(String color){ door = 5; Car(color, "auto",4); //에러! } 생성자끼리 호출할 땐 반드시 첫 번째 줄에서만 호출 가능합니다. 위에 또 다른 에러가 있죠? 다른 생.. 2021. 5. 25.
17) 객체지향-생성자(constructor)와 기본생성자(default constructor) 17-1) 생성자(constructor) -인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메서드' -인스턴스 생성 시 수행할 작업(iv초기화)에 사용 메서드인데, 객체가 생성될 때마다 초기화 해주는 메서드라고 보면 됩니다. Time t = new Time();//객체생성 t.hour = 12; t.minute = 34; t.second = 56; 여기서 시간, 분, 초는 처음에 0으로 기본으로 초기화됩니다. 하지만 우리가 시간, 분 초의 값을 12, 34, 56을 기본값으로 정해주는 겁니다. 근데 어떠세요? 매번 시, 분, 초를 세 줄로 적어야 하는 불편함이 있습니다. 그래서 Time t = new Time(12,34,56); //객체 생성과 초기화 이렇게 객체생성과 초기화를 한 줄로 쓰면 어떠세요.. 2021. 5. 25.
16)객체지향-오버로딩(overloading) 16-1) 오버 로딩이란? 한 클래스 안에 같은 이름의 메서드 여러 개를 정의하는 것(메서드:메서드 이름=n:1) overloading:과적하다 대표적인 예로 println을 들 수 있습니다. void println() void println(boolean x) void println(char x) void println(char [] x) 등등.. 16-2) 오버 로딩이 성립하기 위한 조건 ①메서드 이름이 같아야 한다. ②매개변수의 개수 or 타입이 달라야 한다. ③반환 타입은 영향 없다. ① 메서드 이름 같음 ② 개수는 같으니 타입이 달라야 하는데 int로 타입도 똑같음(오류) ③ 반환 타입 상관없음 ① 메서드 이름 같음 ② 개수는 같으니 타입이 달라야 하는데 int로 타입도 똑같음(오류) ③ 반환 .. 2021. 5. 20.
15)객체지향-static메서드와 인스턴스 메서드(클래스 메서드)/static method and instance method(class method) 15-1) 인스턴스 메서드란? -인스턴스 생성 후, '참조변수.메서드이름()'으로 호출 -인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드 -메서드 내에서 인스턴스 변수(iv) 사용 가능 15-2) static 메서드(클래스 메서드)란? -객체 생성 없이 호출(ex. Math.random()의 경우 객체 생성 없이 사용했었죠?) -인스턴스 멤버(iv, im)와 관련 없는 작업을 하는 메서드 -메서드 내에서 인스턴스 변수(iv) 사용불가 15-3) 인스턴스 메서드와 static메서드의 차이점 반환 타입(long), 메서드 이름(add)은 같은데, 매개변수가 다릅니다. static메서드에서 매개변수는 지역변수(lv)죠? 그럼 'return a+b'에서 a, b는 인스턴스 변수일까요 지역변수일까요? 지.. 2021. 5. 20.
14)객체지향-참조형 매개변수(ReferenceParameter), 참조형 반환타입(Reference Return Type) 14-1) 참조형 매개변수(ReferenceParameter) 기본형 매개변수: 변수의 값을 읽기만 할 수 있다. (read) 참조형 매개변수: 변수의 값을 읽고 변경할 수 있다.(read & write) 14-2) 참조형 매개변수 예제 참조 변수 d의 주솟값을 change메서드의 매개변수로 전달. 주솟값이 0x100이므로 변수x를 가리킴. d.x의 값이 1000으로 바뀜. 기본형 매개변수의 경우, 읽기만 가능해서 인스턴스 변수 x의 값을 읽어오기만 했지만, 참조형 매개변수의 경우, 읽고, 쓰기까지 가능해서 인스턴스 변수 x의 값을 바꿀 수도 있다. 왜? 참조변수의 주솟값을 가지고 있어서. 14-3) 참조형 반환 타입 그림을 무조건 그려보시기 바랍니다. 2021. 5. 19.
13)객체지향-기본형 매개변수(Primitive Parameter) 13-1) 기본형 매개변수? 참조형 매개변수? 매개변수에는 기본형 매개변수와 참조형 매개변수가 있는데요, 그 차이를 잘 아셔야 합니다. 기본형 매개변수: 변수의 값을 읽기만 할 수 있다. (read) 참조형 매개변수: 변수의 값을 읽고 변경할 수 있다.(read & write) 13-2) 예제 이 코드를 보고 순서대로 그리면 다음과 같이 됩니다. 매개변수 x와 지역변수 x는 다르다는 것을 기억하세요. 지역변수 x의 값이 바뀌어도 매개변수 x의 값은 따라 바뀌지 않습니다. 기본형 매개변수는 읽기만 가능하기 때문입니다. 그리고 코드를 보고 그림을 그리는 연습을 꼭 하시길 바랍니다. *유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다* *자세히 보고 싶은 분들은 유튜브 가서 보시면 됩니다* 2021. 5. 18.
12)객체지향-호출스택(call stack) 12)객체지향-호출스택(call stack) 호출 스택은 모든 프로그래밍 언어에서 공통적인 거고요. 매우 중요한 개념입니다. 호출 스택을 이해하지 못하면 앞으로 배울 기본형 매개변수, 참조형 매개변수, 예외처리를 이해하기 힘듭니다. 12-1) 스택(stack) 밑이 막힌 상자. 위에 차곡차곡 쌓인다. A. 넣을 때 B. 꺼낼 때 C. 1, 2 사이에 3을 넣을 수도, 1, 2중에 1을 먼저 뺄수도 없다. 12-2) 호출 스택(call stack) 메서드 수행에 필요한 메모리가 제공되는 공간 메서드가 호출되면 호출 스택에 메모리 할당. 종료되면 해제 main()이 println()을 호출합니다. println()이 실행되는 동안 main()은 대기상태가 됩니다. println()이 종료되면 main()은 .. 2021. 5. 18.
11) 객체지향-return문 11-1) return문이란? 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아 가는 것 마지막에 return을 써야 하는 것이 맞으나, 반환 타입이 void일 경우 생략 가능합니다. 11-2) return문 주의사항 return문을 생략해버리면 result의 반환 타입이 어떤것인지 모르기때문에 반환타입이 있는 경우 return문을 꼭 써줘야 합니다. 실행하면 'return문이 없음'이라는 에러가 나옵니다. a> b일 경우는 a값을 반환하는데, 만약 a b일 경우와 그렇지 않은 경우를 나눠서 써야 합니다. 정말 많이 실수합니다!!!!★★★★★★★★★ char, byte, short와 같이 int보다 크기가 작은 타입이 와도 알아서 형변환 해줍니다. result는 반환 값이 int이기 때문에 알아서 int.. 2021. 5. 18.
10) 객체지향-메서드의 호출(call), 메서드의 실행흐름 10-1) 메서드 호출(call) 메서드 호출도 간단합니다. 누구를 불러 일을 시키고 싶을 때 이름 부르는 것과 같습니다. 메서드 이름(값 1, 값 2, …); //메서드를 호출하는 방법 ex) print99danAll(); //void print99danAll()을 호출 int result = add(3,5); //int add(int x, int y)를 호출하고, 결과를 result에 저장 메서드 print99danAll의 경우 매개변수가 없어 괄호 안에 아무것도 없고, 반환 값도 없기 때문에 void를 씁니다. 하지만, add메서드의 경우 매개변수도 존재하고(3, 5) 반환값도 존재하기 때문에(result) 매개변수로 int x, int y를 쓰고 반환 값으로 int result를 씁니다. int .. 2021. 5. 12.
728x90
반응형