More actions
imported>miura0806 No edit summary |
imported>miura0806 No edit summary |
||
| Line 37: | Line 37: | ||
** struct의 구성요소라고 봐도 무관 | ** struct의 구성요소라고 봐도 무관 | ||
** 2. 기능 / 메서드 / 함수 | ** 2. 기능 / 메서드 / 함수 | ||
** | ** public과 private? | ||
{| class="wikitable" | |||
|- | |||
| 분류 | |||
| 접근 지정자 | |||
| 클래스 내부 | |||
| 같은 패키지 내의 클래스 | |||
| 다른 모든 클래스 | |||
|- | |||
| 전용 멤버 | |||
| private | |||
| O | |||
| X | |||
| X | |||
|- | |||
| 패키지 멤버 | |||
| 없음 | |||
| O | |||
| O | |||
| X | |||
|- | |||
| 공용 멤버 | |||
| public | |||
| O | |||
| X | |||
| X | |||
|} | |||
* 클래스 작성 -> 인스턴스 생성 | * 클래스 작성 -> 인스턴스 생성 | ||
| Line 79: | Line 105: | ||
} //생성자 | } //생성자 | ||
* 기초형과 참조형 | |||
** 메소드의 매개변수가 기초형 변수일 경우, 값이 복사 | |||
** 참조형 변수일 경우에도 값이 복사되나, 그 값이 주소값이기 때문에 가리키는 객체의 값을 바꿀 수 있다. | |||
** '''주의!''' 객체가 복사되는 것이 아니라는 것을 기억 | |||
** 이를 응용해, 배열이 참조형이라는 것을 이용하여 크기가 1짜리 배열을 만들어서 포인터처럼 쓸 수 있음... | |||
* 가변 길이 인수 | |||
** 메소드로 전달된 인수의 정확한 개수를 알 수 없을 때 쓰임. | |||
** 예제 (출처 : POWER JAVA 2판) | |||
class Test { | |||
void sub(int... v) { | |||
System.out.println("인수의 개수 : " + v.length); | |||
for (int x : v) | |||
System.out.print(x + " "); | |||
System.out.println(); | |||
} | |||
} | |||
public class VarArgsTest { | |||
public static void main(String args[]) { | |||
Test c = new Test(); | |||
c.sub(1); | |||
c.sub(2, 3, 4, 5, 6); | |||
c.sub(); | |||
} | |||
} | |||
/* | |||
실행 결과 | |||
인수의 개수 : 1 | |||
1 | |||
인수의 개수 : 5 | |||
2 3 4 5 6 | |||
인수의 개수 : 0 | |||
*/ | |||
Revision as of 01:52, 16 July 2014
일시
- 오후 12시 05분 ~ 1시 00분
참가자
| 유재범 | 참석 |
| 최다인 | 참석 |
| 이지수 | 참석 |
| 김용준 | 참석 |
| 김정민 | 참석 |
진행 상황
- 최다인 학우의 발표
- Java의 정석 - Chapter 6
발표 내용
- 객체지향 프로그래밍은 절차지향 프로그래밍의 반대개념이 아니다.
- 객체지향에도 절차지향의 개념이 포함되어 있음.
- Class는 일종의 설계도 개념, 설계도로 만들어 낸 제품을 객체, 또는 인스턴스라 함.
- 객체와 인스턴스의 차이
- 책상은 객체이다.
- 책상은 가구 클래스의 인스턴스이다.
- 실제로 생성한 객체 각각을 인스턴스라 부름.
- 객체의 구성
- 1. 속성 / 멤버변수 / 필드
- struct의 구성요소라고 봐도 무관
- 2. 기능 / 메서드 / 함수
- public과 private?
| 분류 | 접근 지정자 | 클래스 내부 | 같은 패키지 내의 클래스 | 다른 모든 클래스 |
| 전용 멤버 | private | O | X | X |
| 패키지 멤버 | 없음 | O | O | X |
| 공용 멤버 | public | O | X | X |
- 클래스 작성 -> 인스턴스 생성
- class 클래스명 { } (ex: class TV { ... })
- 클래스명 변수명; (ex: TV tv1;)
- 이 때 생성되는 변수는 인스턴스가 아니다. 생성하는 인스턴스의 주소값을 담을 수 있는 일종의 포인터 변수.
- 변수명 = new 클래스명(); (ex: tv1 = new TV();)
- new를 사용했을 때 인스턴스가 생성되며, 이 때의 주소값을 변수에 대입. 따라서 TV tv1 = new TV(); 처럼 한 문장에 쓸 수도 있다.
- 가비지 콜렉터
class TV {
...
}
TV tv1 = new TV();
TV tv2 = new TV();
//각각 별개인 두 개의 TV 인스턴스 생성
tv2 = tv1;
//tv2가 가리키는 인스턴스를 tv1이 가리키고있는 TV 인스턴스로 변경.
//이 때, 원래 tv2가 가리키고 있던 인스턴스는 사용하지 않는 상태가 되므로, JAVA의 가비지 콜렉터가 자동으로 메모리를 해제한다.
- 객체지향의 기본 개념 중 하나 : 구현의 세부 사항을 클래스 안에 감추어라.
- public 필드는 되도록 피해야한다.
- 필드에 직접 접근하는 방법보다는, 클래스에 메소드를 추가하여 필드에 대한 접근을 선별적으로 승인해야 한다.
- 필드와 관련된 두 종류의 메소드
- 접근자
- 보통 get을 메소드 이름 앞에 붙임
- 생성자
- 보통 set을 메소드 이름 앞에 붙임
- 장점
- 잘못된 값이 대입되는 것을 방지할 수 있다.
- 값이 바뀌면 안되는 필드의 경우, 생성자를 만들지 않음으로 자동적으로 읽기만 가능하게 할 수 있다.
//접근자 생성자 예시
class Car {
private String color;
public String getColor() {
return color;
} //접근자
public void setColor(String c) {
color = c;
} //생성자
- 기초형과 참조형
- 메소드의 매개변수가 기초형 변수일 경우, 값이 복사
- 참조형 변수일 경우에도 값이 복사되나, 그 값이 주소값이기 때문에 가리키는 객체의 값을 바꿀 수 있다.
- 주의! 객체가 복사되는 것이 아니라는 것을 기억
- 이를 응용해, 배열이 참조형이라는 것을 이용하여 크기가 1짜리 배열을 만들어서 포인터처럼 쓸 수 있음...
- 가변 길이 인수
- 메소드로 전달된 인수의 정확한 개수를 알 수 없을 때 쓰임.
- 예제 (출처 : POWER JAVA 2판)
class Test {
void sub(int... v) {
System.out.println("인수의 개수 : " + v.length);
for (int x : v)
System.out.print(x + " ");
System.out.println();
}
}
public class VarArgsTest {
public static void main(String args[]) {
Test c = new Test();
c.sub(1);
c.sub(2, 3, 4, 5, 6);
c.sub();
}
}
/*
실행 결과
인수의 개수 : 1
1
인수의 개수 : 5
2 3 4 5 6
인수의 개수 : 0
*/
다음 진행
- Chapter 7
- 객체지향 프로그래밍 2
- 발표 : 김용준
과제
- 다운로드 링크 과제 2번까지.