목록분류 전체보기 (571)
꿈 많은 사람의 이야기
상속이란, 하위 클래스(자식 클래스)가 상위 클래스(부모 클래스)의 멤버를 사용할 수 있는 것이다. 즉 부모는 자식에게 자신의 멤버를 제공해준다. 자식은 부모에게 상속 받은것 + 자신의 것을 사용할 수 있다. 상속은 클래스를 재사용하기 때문에 코드의 중복을 줄여준다. 또한 개발의 시간을 단축시킬 수 있어 매우 유용하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class A { int a = 0; public void method1() { } } class B extends A { public void method1() //부모 메소드 사용 { a = 5;// 부모 필드 변수 사용 } //부모의 메소드를 자식이 재정의함 -> 오버라이딩 } Colored by ..
이 글은 블로그를 옮기면서 예전에 갔다온 여행을 정리한 것입니다 경주여행. 경주는 볼거리가 많은 장소이다. 첨성대, 안압지, 선덕여왕 촬영지, 각종 대형 릉들, 대릉원, 불국사, 석굴암 등등 그 중에 내가 간 곳은 야간 안압지와 천문대다. 원래 계획은 불국사, 석굴암, 안압지, 첨성대를 다 보려고 했다. 하지만 이번주 월요일엔 경주에... 엄청난 눈이 내리는 바람에... 모든것이 불편했다. 버스도 잘 안다니며, 시간도 오래걸리고, 걷기도 힘든상황에서 불국사(뒷편), 석굴암은 폐쇠되었다고 들었다. 그래서 하는 수 없이 안압지와, 첨성대, 대릉원만 보고 갔다. 먼저 숙소를 찾고 밥을 먹었다. 런닝맨 프로그램에서 나온 식당이라고 한다. 대릉원쪽에서, 황남(?)초등학교 인가 초등학교 이름이 잘 기억이 안나는데,..
이 글은 3년전에 갔다온 글을 블로그를 옮기면서 재작성하였습니다. 지금은 이 정보가 안맞을 확률이 높습니다 이 여행을 도전하고 싶으시면, 꼭! 다시 알아보셔야 합니다! 1월3일, 4일, 5일을 통해서 서울에서 부산으로 가는 시내버스 여행을 갔다 왔다. 우연치 않게 본 이 여행의 기행문을 통해 이상하게 삘이 꽂혀서 친구와 같이 4명에서 가게 되었다. 우린 서울역에서 출발하지 않고, 바로사당역으로 가서 사당역에서 차 시간을 맞추어 탔다. 간단하게 경로와 결론을 쓰면 1. (금요일 오후 12시가 지난, 토요일 아침)3:30 ~ 4:04 사당역->수원역 7700번 출발 2. 4:43 ~ 5:33 66번 수원역 ->용인시장 3. 용인시장에서 터미널 까지 걷기(약 10분이내) 4. 6:00 ~ 6:28 10-4번 ..
객체 지향 프로그래밍에서는 객체 외부에서 직접적으로 접근하는 것을 막는다. 왜냐하면 객체의 데이터를 외부에서 마음대로 다룰 경우 무결성이 깨질 수 있기 때문이다. 때문에 객체 지향 프로그래밍에서는 메소드를 통해서 데이터를 변경하는 방법을 선호한다. 데이터는 외부에서 접근할 수 없도록 막고 메소드를 공개해서 외부에서 데이터에 접근하게 하는 방법이다. 이러한 역할을 담당하는 것이 get, set메소드이다(getter, setter 라고도 부른다) setter는 값을 저장(셋팅)하게 유도하는 메소드이다. 반대로 getter는 값을 return받게 해주는 메소드이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ..
라이브러리 클래스를 설계할 때에는 외부 클래스에서 접근할 수 있는 멤버와 접근 할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계하는 것이 바람직하다. 자바는 이러한 기능을 구현하기 위해 접근 제한자를 제공하고 있다. 접근 제한자는 public, protected, dafault, private와 같이 네 가지 종류가 있다. 각 특징은 밑의 표와 같다 클래스 내부 같은 패키지 서브 클래스 다른 패키지 public o o o o protected o o o x default o o x x Private o x x x 말그대로 public은 다 접근 가능하고 protected는 다른 패키지에선 접근이 불가능하고 default는 서브(자식) 클래스와 다른 패키지에서 접근이 불가능하다. 하지만 만약 같은..
같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스를 사용할 수 있지만 다른 패키지에 속하는 클래스를 사용하려면 주로 import를 사용해서 쓴다. import java.util; 처럼 말이다. 주의할 점은 import문으로 지정된 패키지의 하위 패키지는 import대상이 아니다. 만약 하위 패키지에 있는 클래스들도 사용하고 싶다면 import문을 추가해야한다. 예를들어 com.mycompany.project 패키지를 갖고 오고 싶으면 import com.mycompany.*; 이 아니라 import com.mycompany.project.*; 으로 해야 한다.
가끔 프로그램을 하다 보면 단 하나의 객체만 만들도록 보장해야 하는 경우도 있다. 단 하나만 생성된다고 해서 이 객체를 싱글톤(Singleton)이라고 한다. 이러한 싱글톤을 만드려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다. 생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 된다. 그리고 자신의 타입인 정적 필드를 하나 선언하고 자신의 객체를 생성해 초기화한다. 자신의 클래스 내부에선 new 연산자로 생성자로 호출이 가능하다. 정적 필드 또한 private 접근 제한자를 붙여 외부에서 필드 값을 사용못하게 막고 대신 외부에서 호출 할 수 있는 getInstance()메소드를 선언하고 객체를 리턴한다 1 2 3 4 5 6 7 8 9..
정적(static)이란 '고정'의 의미를 갖고 있다. 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 1 2 3 4 5 6 7 8 class A { static int num = 1; static void amt() { } } class B { A.num; A.amt(); } cs위 static으로 작성 해놓은 변수와 메소드가 정적 멤버이다. 정적 필드와 정적 메소드는 클래스에 고정된 멤버이므로 클래스 로더가 클래스(바이트 코드)를 로딩해서 메소드 메모리 영역에 적재할 때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나면 바로 사용할 수 있다. 이것에 대한 접근은 클래스.필드; 클래스.메소드( 매개값) 으로 호출할 수 있다. 여기서 가장 중요한 특징은..
메소드는 객체의 동작에 해당하는 중괄호 {} 블록이다. 자바는 이러한 메소드를 이용해서 클래스안에서 기능을 동작하게 만든다. 메소드는 리턴타입 메소드 이름 ([매개변수1, 배개변수2..]){ 실행 소스; } 와 같이 만들어진다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Radio { int number; public void setVolume(int volume) { number = volume; } public int getVolume() { return number; } } Colored by Color Scripter cs 위에서 setVolume은 볼륨 값을 설정하는 메소드이다. 그리고 getVolume은 설정된 number 값을 return 해주는 return ..
생성자는 new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 객체 초기화란 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 하는것이다. 자바에서의 객체는 생성자를 실행시키지 않고서 만들 수 없다. new 연산자에 의해 생성자가 성공적으로 실행되면 힙 영역에 객체가 생성되고 객체 주소가 리턴된다. 모든 클래스에는 생성자가 반드시 존재하며, 하나 이상을 가질 수 있다(오버로딩). 만약 개발자가 클래스 내부의 생성자 선언을 생략했으면 컴파일러는 기본 생성자를 바이트 코드에 자동 추가 시킨다. 예를들어 소스 파일(A.java)에선 class A { } 이면 바이트 코드파일(A.class)에서는 class A { public A() { } } 와 같이 생성..