2011년12월12일_JAVA_인스턴스메소드와 정적메소드, 메소드 오버로딩, 객체의 복사, 패키지
★ 공부를 숙제처럼 하지 말자. 그 때 그때 확실히 익히고 넘어가자. 공부를 하는 방법이 잘 못 되었고 수업시간, 복습시간 즉, 시간을 투자하자. (기본적인 것) 시간을 투자하지 않으니 지식의 기반이 약하다. ★ 잘 모르는 것을 쓸데 없이 부풀리지 말고 핵심만 정리해 말하자. -> 핸드폰포장이 점점 작아진다. 과거엔 휴대폰이 비싸니 포장이 간소하면 싸보여 포장을 과하게함. 알맹이가 중요하지 껍데기는 필요하지 않다. 뭐든지 심플하게 하라. ★ 정리 – 상대 질문의 의도를 캐치하라. ★ 욕을 듣는 방법 “지금 몇 시야? (화남)” ---> “10시 입니다.” (이러면 개념과 싸가지 없는 놈이다.) ---> “늦어서 죄송합니다. (반성)” (이렇게 하라.) “객체란 무엇인가?” ---> “인스턴스입니다.” (말장난 하냐 같은 것을 뜻하는 용어자나) |
인스턴스 메소드와 정적 메소드 |
● 인스턴스란 무엇인가?
인스턴스(객체)는 클래스가 실제 구현된 것.
내 생각은 클래스 형태의 관점으로 메모리를 바라본다는 것이다.
┌ 인스턴스메소드는 객체를 생성해야 호출이 가능하다.
└ 정적메소드는 객체 생성없이 호출가능하다.
● 정적메소드내에서 인스턴스변수는 사용불가능.
객체가 존재하지 않음 –> 인스턴스 변수/메소드 둘 다 사용불가.
● 정적메소드의 예와 사용법
Math.sqrt(34.5) System.out.println(“안녕하삼~ 짜장면 탕수육 곱배기 시키면 만두 하나 주삼~”);
메소드 오버로딩 (Method Overloading) |
┌ 오버로딩: 인자가 다름. 반환자료형은 무관.
└ 오버라이딩: 인자가 같음.
오버로딩과 오버라이딩이 가능하니 JAVA는 다형성을 지원한다.
● 메소드 시그니처: 오버로딩된 메소드를 구분하는 메소드이름, 인수의 개수, 순서
● 가장 빈번히 사용되는 오버로딩은 생성자
println()도 여러 자료형의 인수를 취하는 오버로딩된 메소드이다.
객체의 복사 |
객체를 복사하기 위해 아래와 같은 코드를 실행하면...
Rectangle rectA = new Rectangle(10, 20);
Rectangle rectB = rectA;
rectA와 rectB는 객체 참조변수로 메모리 힙 영역에 존재하는 객체의 주소를 가지고 있다. (메모리 동적할당과 비슷)
rectA ───┬───> 객체
rectB ───┘
결국 상기와 같이 rectA와 rectB는 같은 객체를 중복해서 가리키게 되고 객체를 복사하진 못 한다.
객체를 복사하기 위해선 복사생성자를 사용하여 객체를 생성하며 객체를 인자로 받아 그 내용을 새로 생긴 객체에 복사해야 한다.
|
3행에서 7행까지 코드는 Rectangle클래스의 복사생성자로 Rectangle클래스로 선언된 객체를 인자로 받아 속성값을 복사한다.
C++과 다르게 JAVA는 C++과 다르게 값/참조/포인터 전달 구분이 없이 변수는 값 전달, 객체는 참조전달로 고정되어 있다.
사용법은 아래와 같다.
Rectangle rectA = new Rectangle(10, 20);
Rectangle rectB = new Rectangle(rectA);
rectA ──────> 객체#1 (10, 20)
rectB ──────> 객체#2 (10, 20)
두 객체는 같은 속성값을 가지게 된다.
패키지(Package) |
C++의 namespace와 비슷한 개념으로 패키지 이름으로 클래스들을 묶는다.
다른 점은 패키지이름과 같은 디렉토리에 클래스들을 넣어야 한다는 것이고,
명시하지 않으면 디폴트패키지이다.
클래스가 정의된 파일의 첫 줄에 package [패키지이름]; 을 추가하면 된다.
'내장형하드웨어 > 일일보고서' 카테고리의 다른 글
2011년11월29일_BrickOS mm.c의 MM_BLOCK_FREE 매크로함수 분석 (0) | 2011.11.30 |
---|---|
2011년11월16일_VFW_Video for Windows라이브러리를 이용한 CAM(DC-300)영상 캡쳐 (0) | 2011.11.16 |
2011년10월31일_버블/선택/삽입 정렬의 시간을 측정해보자. 삽입정렬 개선 (0) | 2011.11.01 |
2011년10월28일_버블/선택/삽입 정렬의 시간을 측정해 보자. (0) | 2011.10.28 |
2011년10월26일_ARM_서보모터AX-12+ 받음 (0) | 2011.10.27 |