2009. 10. 16 Choi, Namseok http://sugi.pe.kr Java 기초 (객체와 클래스) 2009. 10. 16 Choi, Namseok http://sugi.pe.kr.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
5장. 참조 타입.
6장. 클래스.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
제7장 클래스와 객체.
23장. 구조체와 사용자 정의 자료형 2.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
10장. 예외처리.
자바 5.0 프로그래밍.
C#.
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
13. 연산자 오버로딩.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
7장 인터페이스와 추상 클래스.
Method & library.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
2장. 변수와 타입.
20장. 객체지향 프로그래밍 01_ 객체지향 프로그래밍의 시작.
제 4장. 객체 지향 프로그래밍 시작하기 학기 프로그래밍언어및실습 (C++).
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Power Java 제11장 상속.
Chapter 02. 자바 기본 문법.
JA A V W. 06.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
Java Programming Java Programming 3장 백석대학교 인터넷멀티미디어 LAB1111호.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
[ 단원 04 ] 반복과 배열.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
발표자 : 이지연 Programming Systems Lab.
Chapter 11 구조체.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
6 객체.
20 XMLHttpRequest.
Presentation transcript:

2009. 10. 16 Choi, Namseok http://sugi.pe.kr Java 기초 (객체와 클래스) 2009. 10. 16 Choi, Namseok http://sugi.pe.kr

Last 자바의 조건문(제어문) 자바의 반복문 자바의 배열

Contents 객체지향 프로그래밍, 객체, 클래스의 개념 클래스의 구조 객체 생성 멤버 변수 메소드 생성자 this 키워드 패키지

객체지향 프로그래밍, 객체, 클래스의 개념 객체지향 프로그래밍 객체의 개념 클래스의 개념

객체지향 프로그래밍 자바, C++, C# 이 객체지향 언어 하나의 프로그램을 독립적 단위별로 나누어 설계, 필요시 통합 필요 부분만 수정하므로 개발 편리 절차지향 프로그래밍에 비해 부분으로 분해하여 프로그래밍

객체지향 프로그래밍 절차지향 객체지향

객체지향 프로그래밍 객체지향에서의 클래스는 함수와 변수의 묶음으로 클래스 단위 로 설계 절차지향 객체지향

객체지향 프로그래밍 캡슐화(encapsulation)는 코드를 보호하는 역할을 합니다. 클래스(class)는 동일한 객체들의 집합체이며 객체의 원형 (prototype)입니다. 추상화(abstraction)란 객체가 자신의 정보를 은폐(은닉이라고 도 함. information hiding)하고, 외부적으로는 추상적인 내용만 알려주는 것을 말합니다. 상속(inheritence)이란, 기존에 이미 만들어져 있는 객체의 변수 와 메소드를 물려받아 다른 새로운 객체를 만드는 것으로 재사용 성(reusability)을 얻을 수 있습니다. 다형성(polymorphism)이란 부모 객체로부터 상속받아 전혀 새 로운 결과물을 산출합니다.

객체의 개념 현실세계에 존재하는 모든 것 명사로서의 성질을 지닌 것 객체 = 변수 + 메소드 변수 : 객체의 속성 표현 메소드 : 객체의 기능 표현 정의된 객체는 다른 프로그래밍에서 재사용 가능

객체의 개념 학생 객체

클래스의 개념 같은 기능의 객체 여러 개 필요 여러 개의 객체를 표현하기 위해 같은 변수와 메소드도 여러 개 필요 여러 개의 객체를 표현하기 위해 같은 변수와 메소드도 여러 개 필요 필요한 변수와 메소드를 한번만 정의하고 필요시 복사하여 재사 용 필요 여러 개의 동일 구조를 가지는 객체를 생성하기 위해 사용되는 틀

클래스의 개념

클래스의 구조 클래스의 작성 클래스 선언부 클래스 멤버부 자바 modifier

클래스의 작성 모든 객체 표현 이전에 클래스 정의 자바 언어의 프로그램 단위 필요 변수와 메소드 정의하고 클래스 이름과 같은 파일에 저장 B 클래스가 A 클래스 객체 생성하여 A 클래스에 정의된 변수와 메소드 사용

클래스 선언부 클래스 구조 클래스 선언부 형식

클래스 선언부 클래스 선언부 형식 class 키워드와 클래스이름 반드시 기술 modifier는 클래스 활용 방법, 접근 권한 지정 extends 부분은 상속 표현 implements 부분은 인터페이스 구현

클래스 멤버부 클래스의 멤버부는 멤버 변수, 메소드, 생성자로 구성 멤버 변수 : 클래스가 가지는 속성을 정의 생성자(constructor) : 객체의 초기화 담당 메소드 (method) : 클래스가 가지는 데이터를 조작하고 변환 필요시에 멤버 변수와 생성자, 메소드 등에도 modifier를 기술

자바 modifier 접근 범위나 활용 방법 지정하는 키워드들

자바 modifier 클래스의 modifier

객체 생성 객체 생성 문장의 구성 요소 객체 생성 문장과 자바의 메모리 구조

객체 생성 문장의 구성 요소 클래스 정의 후에는 객체 생성 학생 클래스 정의 객체 참조 변수 선언

객체 생성 문장의 구성 요소 객체 생성 객체 생성 과정

객체 생성 문장과 자바의 메모리 구조 Student 객체 생성시 메모리 구조

객체 생성 문장과 자바의 메모리 구조 실습 Class : Exam_01 public class Exam_01{ public static void main(String args[]){ Student choi = new Student(); sugi.name = “sugi"; sugi.age = 20; //sugi.number = 0500011; System.out.println("한 학생의 이름은 "+ sgui.name + "이고, 나이는 “ + sugi.age + "입니다"); } class Student { String name; /* 이름 */ int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */

멤버 변수 멤버 변수의 개념 멤버 변수의 구성 요소 public, protected, private modifier static modifier final modifier

멤버 변수의 개념 메서드 외부에 선언하는 변수 객체의 속성 표현 지역변수는 특정 블록({}) 내부에서만 사용 가능

멤버 변수의 구성 요소 멤버변수 구성 요소 멤버변수의 modifier

public, protected, private modifier 캡슐화와 정보 숨김 구현 멤버 변수의 접근 modiifer

public, protected, private modifier number : 외부에서 참조 불가능 records : 하위 클래스 참조 가능 name : 모든 클래스 참조 가능

static modifier static 변수 또는 클래스 변수 해당 클래스의 모든 객체들이 하나의 클래스 변수 공유 클래스 로딩 시기에 메모리에 한번만 할당 객체들 사이의 공통 속성 표현 클래스 이름을 통하여 접근 가능

static modifier 클래스 변수의 활용

static modifier static 변수와 non-static 변수 비교

static modifier 실습 Class : Exam_02 class Exam_02{ public static void main(String args[]){ Person.nation = "대한민국"; Person p1 = new Person(); p1.name = "이자바"; p1.age = 23; Person.count++; System.out.println("p1 이 참조하는 사람 객체의 이름은 " + p1.name + " 이고 나이는 " + p1.age + " 이며 국적은 “ + p1.nation + " 입니다."); Person p2 = new Person(); p2.name = "박이한"; p2.age = 21; System.out.println("p2 가 참조하는 사람 객체의 이름은 " + p2.name + " 이고 나이는 " + p2.age + " 이며 국적은 " + p2.nation + " 입니다."); System.out.println ("생성된 사람 객체의 수는 " + Person.count + " 명입니다."); }

// Person 클래스를 선언한다. class Person { String name; /* 이름 */ int age; /* 나이 */ static int count = 0; /* 사람의 수 */ static String nation; /* 국적 */ }

final modifier 프로그램 내에서 한번 초기화된 후 값의 수정 불가능한 상수 final 변수의 경우 객체 공유 값 변경 불가능한 static 변수 절대 불변의 진리 값 표현 변수 자바 언어의 정해진 규칙에 의해 얻어진 값을 표현하는 변수 final 변수의 예 // Person 클래스를 선언한다. class Person { String name; /* 이름 */ int age; /* 나이 */ static int count = 0; /* 사람의 수 */ final static String nation = "대한민국"; /* 국적 */ }

메소드 메소드 선언부 return 문과 리턴 타입 메소드 구현부 public, protected, private modifier static modifier 매개변수의 개념과 매개변수 전달 원리 메소드 overloading

메소드 선언부 메소드 선언부의 구성 요소

메소드 선언부 메서드의 modifier

return 문과 리턴 타입 메소드 이름 앞에 오는 필수 요소 메소드 수행 후 복귀하면서 전달하는 값의 데이터 타입 int 데이터 리턴하는 메서드 호출 예

return 문과 리턴 타입 String 데이터 리턴하는 메소드 호출 예 리턴값이 없는 메소드 호출 예

return 문과 리턴 타입 return의 다른 예 return 문의 용도

메소드 구현부 private 변수 접근하는 public 메소드 필요 : 캡슐화 표현

메소드 구현부 사원 이름 출력 등 기능 반복적 필요하면하나의 메소드로 정의하 고 호출

메소드 구현부 실습 Class : Exam_03 class Exam_03 { public static void main(String args[]) { Student lee = new Student(); lee.setName("이자바"); lee.print(); Student kim = new Student(); kim.setName("김대한"); kim.print(); Student park = new Student(); park.setName("박민국"); park.print(); }

class Student { String name; private int number; int age; String title; String dept; protected String grade; // 이름 정보를 설정하고 추출하는 메서드를 선언한다. public void setName(String name){ this.name = name; } public String getName(){ return this.name; public void print(){ System.out.println("학생의 이름은 "+ name + " 입니다.");

public, protected, private modifier 캡슐화와 정보 숨김 구현 메소드의 접근 modiifer

static modifier static 메소드는 클래스 메소드 클래스 이름으로 접근 객체 생성 이전 단계인 클래스 로드시에 메소드 사용 가능 객체 변수 사용 불가능 클래스 변수만 사용하는 경우 필요

static modifier 실습 Class : Exam_04 class Exam_04 { public static void main(String args[]) { StaticClass.m1(); //StaticClass.m2(); StaticClass o1 = new StaticClass(); StaticClass o2 = new StaticClass(); o1.m1(); o1.m2(); o2.m1(); o2.m2(); } class StaticClass { static int a=10; int b=20; static void m1(){ System.out.println(a++); //System.out.println(b++); void m2(){ System.out.println(b++); 실습 Class : Exam_04

매개변수의 개념과 매개변수 전달 원리 메소드나 생성자 정의시 부가 정보는 매개변수로 정의하여 전달 메소드 정의시 필요 정보의 타입과 개수, 순서 정의는 형식매개 변수임 메소드 호출시에 형식매개변수로 전달하는 실제 매개변수는 실 매개변수임

매개변수의 개념과 매개변수 전달 원리 자바 언어에서 메소드 호출시에 매개변수 전달 방법은 call by value임 기본형 변수는 실제값 전달 참조형 변수는 객체의 주소값 전달

매개변수의 개념과 매개변수 전달 원리 기본형 변수의 매개변수 전달

매개변수의 개념과 매개변수 전달 원리 참조형 변수의 매개변수 전달

매개변수의 개념과 매개변수 전달 원리 실습 Class : Exam_05 class Exam_05 { public static void main(String args[]) { Exam_05 e = new Exam_05(); int j=10; e.add(j); System.out.println ("main에서 add(j) 호출 후 : " + j); Sample t = new Sample(); e.add(t); ("main에서 add(t) 호출 후 : " + t.a); } //기본형 변수 i 를 매개변수로 가지는 add 메서드 void add(int i) { System.out.println(i++); //참조형 변수 s 를 매개변수로 가지는 add 메서드 void add(Sample s) { System.out.println(s.a++); class Sample{ int a=10; 실습 Class : Exam_05

메소드 overloading 하나의 클래스 내부에 같은 이름의 메서드 정의 가능 매개변수 리스트 다르게 정의 매개변수 타입이나 개수, 또는 순서 중 하나가 다르게 정의 객체지향언어의 다형성 지원

메소드 overloading java.lang.Integer.parseInt() 메서드 overloading

메소드 overloading 실습 Class : Exam_06 class AddTest { int add(int i, int j) { return i + j; } String add(String i, String j) { double add(double i, double j) { class Exam_06 { public static void main(String args[]) { AddTest at = new AddTest(); String res1 = at.add("java", "program"); double res2 = at.add(2.56, 1.10); int res3 = at.add(10, 20); System.out.println("문자열 결합의 결과 : " + res1); System.out.println("실수 덧셈의 결과 : " + res2); System.out.println("정수 덧셈의 결과 : " + res3);

생성자 생성자의 개념과 특징 생성자의 구성 요소 public, protected, private modifier 생성자와 객체생성 생성자 overloading

생성자의 개념과 특징 객체 생성시 객체 초기화 과정 기술하는 특수한 메소드 객체 생성 문장의 구조 new 연산자 뒤에서 호출

생성자의 개념과 특징 생성자의 특징 메소드처럼 리턴 타입을 설정하지 않습니다. 클래스에 대한 객체를 생성할 때 초기화를 담당합니다. 자바 클래스는 자동으로 기본 생성자(default constructor)가 존재 하므로 생성자가 필요 없으면 반드시 프로그래머가 정의할 필요는 없습니다. 생성자 overloading을 지원합니다. super(), this()와 같은 특수한 형태의 생성자가 존재합니다.

생성자의 구성 요소 생성자의 구성 요소 리턴 타입이 없고 클래스와 이름이 같은 점이 형태상 메소드와 구별

public, protected, private modifier default : 생성자 생략한 상태로 같은 패키지 내부에서 접근

생성자와 객체생성 기본 생성자가 모든 클래스에 자동 포함 기본 생성자 형태 기본 생성자 이용 예

생성자와 객체생성 명시적 생성자 정의 후에 기본 생성자 자동 상실 명시적 생성자 이용 예

생성자와 객체생성 실습 Class : Exam_07 public class Exam_07{ public static void main(String args[]){ /* Student lee = new Student(); lee.name = "이자바"; lee.age = 20; System.out.println ("한 학생의 이름은 "+ lee.name + "이고, 나이는 "+ lee.age +" 입니다"); */ Student kim = new Student("박대한", 22); ("한 학생의 이름은 "+ kim.name + "이고, 나이는 "+ kim.age +" 입니다"); } class Student { String name; /* 이름 */ int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */ //이름과 나이를 초기화하는 생성자 정의 Student(String n, int a){ name = n; age = a; }

생성자 overloading 하나의 클래스에서 같은 이름의 생성자 여러 개 정의 가능 생성자의 매개변수 타입, 개수, 순서 다르게 정의

생성자 overloading 3가지 형태의 객체 생성 가능

생성자 overloading 실습 Class : Exam_08 class Student { String name; /* 이름 */ int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */ //이름과 나이를 초기화하는 생성자 정의 Student(String n, int a) { name = n; age = a; } //이름만 초기화하는 생성자 정의 Student(String n) { age = -1; //기본 생성자 정의 Student() { name = "none"; 실습 Class : Exam_08 public class Exam_08 { public static void main(String args[]) { Student lee = new Student(); System.out.println ("한 학생의 이름은 "+ lee.name + "이고, 나이는 "+ lee.age +" 입니다"); Student park = new Student("박이한"); ("한 학생의 이름은 "+ park.name + "이고, 나이는 "+ park.age +" 입니다"); Student kim = new Student("김대한", 22); ("한 학생의 이름은 "+ kim.name + "이고, 나이는 "+ kim.age +" 입니다"); }

this 키워드 this 키워드의 개념 this 키워드와 멤버 변수 this 키워드와 생성자 호출

this 키워드의 개념 this 키워드는 메시지 전달받은 객체 this 키워드는 형태 실행 중인 클래스 타입의 객체 매개 변수나 지역 변수 이름이 객체 변수 이름과 같을 때 구분 같은 클래스 내의 다른 생성자 호출

this 키워드와 멤버 변수 this 키워드를 이용하여 객체 변수 구별

this 키워드와 멤버 변수 class Student { String name; /* 이름 */ int number; /* 학번 */ int age; /* 나이 */ int grade; /* 학년 */ String schoolName; /* 학교명 */ String records; /* 성적 */ //이름과 나이를 초기화하는 생성자 정의 Student(String name, int age){ this.name = name; this.age = age; } //이름만 초기화하는 생성자 정의 Student(String name){ age = -1; //기본 생성자 정의 Student(){ this("none");

패키지 패키지의 개념 import 키워드 package 키워드

패키지의 개념 관련 클래스와 인터페이스 저장 폴더 패키지 사용 이유 같은 이름의 클래스 충돌 회피 관리 용이 클래스 접근 권한을 패키지 단위로 제어 API 는 패키지화 구조로 제공되며 1.5 버전의 경우 150여개 패 키지 제공 도트(.)로 표현

import 키워드 패키지화된 클래스 사용 자동 import 사용 형태 같은 패키지의 클래스 사용 java.lang 패키지의 클래스 사용 사용 형태 패키지 이름만 사용하여 import 클래스 이름 포함하여 import

import 키워드 패키지화된 클래스 사용 import 사용하지 않음 import 사용함

import 키워드 실습 Class : Exam_09 import java.text.DateFormat; import java.util.Date; class Exam_09 { public static void main(String args[]) { Date d = new Date(); DateFormat df = DateFormat.getDateInstance(); System.out.println ("현재 시간은 " + df.format(d) + " 입니다."); }

package 키워드 클래스의 패키지화시에 사용 자바 소스 파일의 첫번째 문장으로 사용

Summary 객체란 실세계에서 명사로 표현할 수 있는 사물이며 자바 프로그 램에서 하나의 소프트웨어적인 단위입니다. 클래스는 클래스의 선언부와 몸체로 나누어지고 몸체에는 멤버 변수 부분과 객체의 초기화를 담당하는 생성자, 데이터를 조작하 고 변환하는 메소드로 구성됩니다. 클래스와 클래스 내부의 구성 요소 선언 시에는 modifier를 이 용하여 요소별 접근 권한과 사용 방법을 지정할 수 있습니다. static 변수는 특정 클래스 타입의 모든 객체가 공통적인 값을 공 유하여 사용하는 경우 선언합니다. 클래스 이름을 통해 접근 가 능합니다.

Summary final 변수는 클래스 내부에서 변수의 값을 수정하지 못하도록 설 정합니다. 주로 절대 불변의 진리값이나 공통적으로 사용하는 변 수 앞에 붙여 사용합니다. 객체의 동적인 특징과 행동을 정의한 부분인 메소드를 메소드의 접근 권한과 특성에 맞도록 선언할 수 있습니다. 메소드의 리턴 타입은 메소드가 수행 종료된 후 리턴하는 값의 데이터 타입을 지정하는 것으로 메소드 선언부의 메소드 이름 앞 에 기술해야 합니다. 매개변수 값의 전달에는 call by value 방식을 사용하며 기본형 변수는 실제 값이 전달되고, 참조형 변수는 주소 값이 복사되어 전달됩니다.

Summary 하나의 클래스 내부에 같은 이름의 메소드를 여러 개 정의하되 매개변수 리스트가 다르게 정의하여 메소드를 overloading 할 수 있습니다. 생성자는 클래스로부터 객체를 생성할 때 객체의 초기화 과정을 기술하는 특수한 메소드로 일반 메소드와 비슷하면서도 메소드 와는 다르게 클래스와 이름이 동일하고 리턴 타입이 없는 특징을 가지고 있습니다. 생성자는 메소드처럼 매개변수 리스트를 다르게 하여 overloading 할 수 있으며 이는 객체 생성 시에 여러 생성자 중 선택적으로 호출 가능하다는 의미입니다.

Summary this 키워드는 현재 객체를 의미하는 자바 키워드로, 멤버 변수와 매개변수, 또는 지역 변수 이름이 동일할 때 구분하거나 this() 문장처럼 생성자를 호출할 때 사용합니다. 패키지란 관련된 클래스들을 모아놓은 구조로, 물리적으로는 폴 더 또는 디렉터리와 유사합니다. 패키지는 도트 (.)를 이용하여 표현합니다. import 예약어에 패키지 이름을 명시하면, 컴파일러가 이 클래 스들의 패키지 이름을 인식하여 해당 클래스를 찾게 됩니다.