본문 바로가기
728x90
반응형

back-end/JAVA43

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.
9) 객체지향-메서드의 정의, 메서드의 선언부와 구현부 9-1) 메서드란? ① 문장들을 묶어놓은 것. 작업 단위로 문장들을 묶어서 이름 붙인 것. 어렵게 생각하지 마시고 이게 전부예요. 위 그림에서 위쪽 코드는 메서드를 필요할 때마다 매번 호출합니다. 그러면 너무 귀찮고 코드는 길어지겠죠? 그래서 아래 그림처럼 메서드를 한 번만 쓰고 필요할 때마다 메서드 이름으로만 호출하면 훨씬 간결한 코드가 됩니다. ② 값(입력)을 받아서 처리하고, 결과를 반환(출력) 수학 시간에 봤던 함수와 비슷합니다. 함수에서 '함'자가 '박스'라는 뜻을 담고 있습니다. 객체지향에서 메서드는 함수를 지칭하는 용어이기도 합니다. 메서드≒함수 차이가 있다면, 메서드는 꼭 클래스 안에 위치해야 합니다. 하지만 함수는 클래스에 독립적입니다. 따로 존재할 수 있습니다. 그냥... 근본적으로 같.. 2021. 5. 12.
8) 객체지향-클래스 변수와 인스턴스 변수의 차이점 8) 객체지향-클래스 변수(cv)와 인스턴스 변수(iv)의 차이점 포커 카드 하나하나가 객체이지요. 지금 위 사진에는 카드가 3장이니 객체가 3개 있습니다. 숫자와 무늬는 객체마다 다르게 유지(숫자:A~10까지/무늬:하트,스페이스..)되어야 하는 값이고 높이와 폭은 포커마다 같게 유지(카드의 높이와 폭은 모두 같다)되어야 하는 값입니다. 속성(변수)= 인스턴스변수(개별속성): 무늬, 숫자 / 클래스변수(공통속성): 폭, 높이 class Card { String kind; //무늬(iv) int number; //숫자(iv) static int width; //폭(cv) static int height; //높이(cv) } 클래스를 만들었으면 객체를 만들어서 객체의 속성과 기능을 사용해야겠죠. Card c.. 2021. 5. 11.
728x90
반응형