2006년 12월 27일
크리스마스 날 일산에서..

영숙, 병욱, 미나 와 함께 일산에서 해물 샤브샤브 먹은 날.
# by | 2006/12/27 13:32 | MY Picture | 트랙백

영숙, 병욱, 미나 와 함께 일산에서 해물 샤브샤브 먹은 날.
# by | 2006/12/27 13:32 | MY Picture | 트랙백
Public 과 private class 의 차이점. - 네이버 지식인 gigasu2 님의 답변.
일단 private과 static을 따로 설명드릴께요...
우선 private, public..등등은 접근 지정자라는 명칭을 가지고 있는데요...
말그대로 멤버변수(필드), 멤버 메소드에 관한 접근 권한을 부여하는 것입니다..
자바로 프로그램을 하게되면 다수의 클래스를 만들게 됩니다..
이때 멤버 변수나 메소드를 선언된 클래스 안에서만 접근할수 있도록 할 것인지.. 아미면 다른 클래스에서도 사용이 가능하게 할 것인지를 지정해 주는 것이라 할수 있습니다..
보통 멤버 변수는 대체로 private 접근지정자로 두어서 그 멤버 변수가 선언된 클래스에서만 접근이 가능하도록 사용하는 것이 대부분 입니다..
그리고 set/get메소드를 이용해서 이 멤버 변수를 사용할수 있도록 하고 있죠...
코드로 간략하게 설명드리자면...
public class Ex1{
private int num;
public int temp;
}
public class Ex2{
public static void main(String [] args){
Ex1 e = new Ex1();
e.num = 10; <==================에러가 납니다..
e.temp = 20;<===================이상 없지요...
}
}
위의 간략한 코드에서는 그냥 접근 지정자로 인해서 접근이 되고 안되고만을 설명드리고 있는 것이구요...
Ex1클래스의 num 멤버 변수를 접근해서 어떤 의미있는 값들을 조작하고 싶다면 쉽게 접근지정가 private를 public로 바꿔주면 되겠지만 이는 객체지향 프로그래밍의 캡슐화나 정보은닉에 관한 내용을 무시하고 프로그래밍 하게 되는 것입니다..
따라서 Ex1 클래스에 set이나 get 메소드를 정의해서 사용하는 것이 올바른 사용이라 할수 있겠지요...
public class Ex1{
private int num;
public int temp;
public void setNum(int n){
this.num = n;
}
public int getNum(){
return num;
}
}
public class Ex2{
public static void main(String [] args){
Ex1 e = new Ex1();
e.setNum(10);
System.out.println(e.getNum());
e.temp = 20;<===================이상 없지요...
}
}
어떻게 이해에 도움이 되었는지 모르겠습니다...
그리고 static 에 대한 설명을 간략하게 드리자면 프로그램이 실행될때 메모리에 할당되는 시점과 소멸되는 시점을 차이라고 말씀드릴수 있습니다...
클래스를 정의했다고해서 클래스의 내용이 메모리에 할당되지는 않습니다..
클래스를 new 키워드를 이용해서 인스턴스화 했을때에 메모리에 클래스에 대한 내용이 올라갑니다..
하지만 static의 키워드가 붙은 멤버 변수나 클래스는 프로그램이 시작 될때 부터 static 메모리 공간에 할당 되어서 프로그램이 종료하는 시점에 해제가 됩니다...
이 static 키워드에 대한 설명은 메모리와 같이 설명이 되어야 하기 때문에 글로써는 쉽게 설명이 어렵네요...
static 클래스에 대해서 설명 드리자면...
쉽게 프로그램을 하면서 System과 같은 정적 클래스를 무의식 적으로 사용하게 됩니다..
예를 들어서 System.out.println()과 같이요...
이 System 클래스가 정적 클래스 인데요..
일반 클래스의 경우 멤버 변수나 멤버 메소드를 사용하기 위해서는 new 키워드를 이용한 인스턴스화 과정을 거친 후에 사용해야 하는데 System 과 같은 클래스는 그런 절차 없이 사용하게 됩니다..
이는 System클래스가 정적 클래스로 선언되어 있기 때문에 프로그램이 시작되면서 이미 메모리에 할당되어 new 키워드 없이 사용할수 있게 되는 것이지요..^^
# by | 2006/12/27 13:29 | Java Study | 트랙백
◀ 이전 페이지 다음 페이지 ▶