티스토리 뷰

<어제 수업 복습>

-자바가 객체 프로그램이 될 수 있는 것은 jvm 자바 버츄얼 머신때문이다.
 이는 운영체제 붙어서 쓰는 프로그램이 아니라 운영체제랑은 별개로 운영될 수 있는 언어인 것이다.
 
<오늘 수업>

-자바에서 프로그래머가 생성자를 인위적으로 생성하면, 기본 생성자를 안 만들어 줍니다.
 그래서 생성자를 손대게 되면 기본 생성자를 따로 꼭 하나 만들어주는게 좋다. 꼭!
-질문사항: 한 패키지에 Main 클래스가 있다. 이 클래스에 어떤 객체 클래스를 가져다 쓰고싶을 때
 이 가져다 쓸 객체 클래스는 Main 클래스와 같은 Package 안에 있어야 하는지?.
 답: 같은 Package 안에 있어야 사용가능한데 다른 Package에 있는 객체클래스도 가져다 쓸 수 있는 방법이 있다. 앞으로 배울것.

 *자바교안 10강  Garbage Collecting 과 패키지 *
 
자바교안 10강 참고.

 #Garbage Collecting
- 객체를 생성하는데 사용되는 키워드는 new이지만, 생성된 객체를 메모리에서
  해제시키는 키워드는 존재하지 않습니다.
- 그 이유는 자바에서는 자바 가상머신(JVM)이 알아서 메모리를 관리해주며, 이
  를 가비지 컬렉팅이라 합니다.
- 객체가 더 이상 프로그램에서 사용되지 않으면 가비지 컬렉터가 스스로 판단해
  서 메모리를 해제하고 수거합니다.
-가비지 콜렉터 덕분에 우리는 자바에서 작업을 할 떄 메모리 걱정 없이 작업을 할 수 있다.
 램에서 이클립스에 할당한 용량이 500mb라 하고 객체 1개당 1mb. 이때 객체를 1000개만든다고 하면 
 할당된 용량을 넘어갔기에 오류가 날 수 있지만. 갈비지 콜렉터가 쓸모없는 데이터를 지워주기 때문에 자바에서는 오류 없이 작업이 가능한것.
 
#패키지(Package)
-그냥 폴더임. 프로젝트를 저장하는 workspace 폴더 안으로 들어가서 파일들을 학인해볼것.
- 프로그램에서 * 아스타링크는 곱하기의 의미도 있지만, '전부 다' 라는 의미도 갖고있음.
ex) import java.util.Scanner; -> 자바 폴더에 유틸 폴더 안에있는 스캐너 파일(객체)을 사용하겠다는 의미.
ex) import java.util.*; -> 요기처럼 * 사용가능. 의미는 유틸 폴더 안에 있는 모든 파일(객체)을 사용하겠다는 의미.
-패키지에서 하위폴더 구조를 구분하고 나타내주는것은 .   
 위에 예시처럼 .을 찍어서 나타내주면됨.
 이 .도 연산자의 일종이다.
-모든 클래스에는 해당 클래스가 위치하는 패키지명이 꼭 알맞게 기재되어있어야한다.
 안그러면 오류 뜸.
 
*패키지에 관한 교안 내용*
#패키지(package)
- 클래스는 크게 2종류가 있습니다. 
- 하나는 개발자가 직접 만들어 사용하는 사용자 정의 클래스이고, 다른 하나는 JDK(Java
Development Kit)안에 포함되어 있거나, 다른 개발자들이 미리 만들어 놓은 클래스들이 있습니다.
- 그런데 이런 클래스들은 매우 종류가 많고 비슷한 기능들을 분류시켜야 할 필요성이 있기 때문에
서로 관계가 있는 클래스들을 패키지로 묶어서 관리합니다.
- 현재 클래스에서 다른 패키지의 외부 클래스를 사용하고 싶은 경우에 import 키워드로 해당 클래
스의 전체 경로(패키지 명까지 포함)를 지정해줘야 합니다.
- 만약 해당 패키지 안에 들어있는 모든 클래스를 사용하고 싶다면 * 기호를 넣어주면 됩니다.
ex) import java.util.Scanner;
ex) import java.util.*;
#소제목
package 선언 방법
1. 사용자가 임의로 패키지를 만드려면 클래스의 가장 윗부분에 패키지 구문을 포함시키면 됩니다.
ex) package store;
2. 패키지 이름은 영문 소문자로 지정하는 것을 권장합니다.
3. 대분류와 소분류 패키지를 구분할 때는 .(dot)을 사용합니다.
4. 최상위 패키지의 이름은 java로 시작할 수 없습니다. java패키지는 표준 API들의 모음을 구성해놓은 패키지
입니다.
5. 자바의 키워드들도 패키지이름으로 사용할 수 없습니다


#기본타입 vs 참조타입
- 기본 타입이란 정수, 실수, 문자, 논리 값을 저장하는 데이터 타입입니다.
- 참조 타입이란 객체의 주소를 참조하는 타입으로 배열, 클래스, 인터페이스 타입을 말합니다.

- 기본 타입으로 선언된 변수는 2실제 값(value)을 변수 안에 저장합니다.
- 참조 타입으로 선언된 변수는 메모리의 주소값을 변수 안에 저장합니다.
-자료구조를 공부해야 스택,힙 영역에대해서 이해할 수 있다.

#객체지향 프로그래밍 기술(상속, 은닉, 다형성)-문법.
-객체 지향 프로그램의 문법은 크게 3개, 세세하게 분리하면 총 15개.

*상속(inheritance)
-굉장히 소중한 기능. 프로그래머로서 고인물이 되갈수록 점점 더 소중함이 와 닿을것.
-상속하지 않고 개별클래스를 만들면 보기 편하다는 장점이 있으나 중복이 발생.
-상속관계를 형성하면 중복이 제거된다는 장점이 있으나 상속관계를 잘 파악하지 못 하면 운용하기 힘들어짐.(위에 뭐가 있는지를 파악을 못하면 못 써먹는다는뜻.)
-사용방법: public class 기존클래스명 extends 부모클래스이름{}
**상속(교안 내용)
- OOP에서 상속은 기존의 클래스를 확장하여 새로운
  클래스를 이끌어내는 것을 의미합니다.
- 상속은 기존의 코드를 재사용함으로써 불필요한 코
  드를 재작성하는 번거로움을 없앨 수 있고, 새로운
  클래스를 만드는 시간과 노력을 줄일 수 있습니다.
- 단일상속만을 지원합니다.
- 어떤 클래스가 다른 클래스로부터 상속을 받아 만들어지면 새롭게 만들어진 클래스를 자식(child or sub)
  클래스라고 부르며, 멤버변수와 메서드를 물려준 클래스는 부모(parent or super)클래스라고 부릅니다.
- 상속을 하면 부모클래스의 멤버변수와 메서드가 자식클래스에 상속이 됩니다. 그러나 부모클래스의 생성
  자는 상속이 되지 않습니다.
- 상속을 사용하는 키워드는 extends 입니다.
- 자바의 모든 클래스는 Object 클래스를 상속받고 있습니다. Object클래스는 자바의 최상위 클래스입니다.

 


<오늘 기억할 내용>
-control + space bar -> 자동완성 기능(Content Assist) 이라고 함.
-자바 프로젝트 새로 만들었을 때. src 폴더에 처음에 있는 모듈-인포라는 클래스는 삭제하기.

 

<오늘 다짐한 새로운 나의 룰>

- 적어도 7시까지는 뭘 하든 자습하고 움직이기.

댓글