posted by changhozz 2012. 6. 29. 11:13

변수란 값을 의미하는게 아니라, 값을 저장할 수 있는 메모리상의 공간을 의미.
ex) int A =3;
A가 변수 3은 변수값.

변수의 Type중
Primitive Type에는
boolean, char,
byte, short, int, long
float, double이 있고

Reference Type에는
8개의 기본형을 제외한 나머지타입이 속한다.
객체의 주소를 저장한다.
때문에 참조형 변수는 프로그래머가 직접 만들어 추가할 수 있으므로
그 수가 정해져 있지 않다.
ex)클래스명 변수명;
Date today;
타입이 클래스이름인 것들은 모두 참조변수이다.

참조형 변수는 null 또는 객체의 주소(4byte,0x0~0xffffffff)를 값으로 갖는다.
null은 어떤 값도 갖고 있지 않음, 즉 어떠한 객체도 참조하고 있지 않다는 것을 뜻한다.

따라서 참조변수의 초기화는 다음과 같이 한다.
Date today = null;
또는
Date today = new Date();

 


즉, 기본형 변수는 변수 자체가 값을 기억하고
참조형 변수는 변수 자체가 값을 기억하지 않고 값이
기억 된 위치의 주소를 기억한다.

 

'JAVA > JAVA 공부' 카테고리의 다른 글

String클래스의 특징  (0) 2012.07.20
java.lang 패키지  (0) 2012.07.20
수치형 범위  (0) 2012.06.26
JVM의 메모리 구조  (0) 2012.06.21
static 메서드  (0) 2012.05.22
posted by changhozz 2012. 6. 29. 10:05



Abstract란 구체적인 개념으로 부터 공통된 부분들만 추려내어 일반화 한것을 말한다.

Abstract method란
메소드 뒤의 중괄호{ } 를 생략하여, 사실상 내용이 없는 메소드를 의미한다.

Abstract Method의 특징으로는
Abstract Class를 상속받는 자식 Class에서는 Abstract Method를 반드시 구현해주어야 한다.
(Abstract Class란 Abstract Method가 1개이상 들어가 있는 경우를 말한다.)

Abstract Class의 목적은
여러개의 클래스들이 상당수의 공통된 점을 가지고 있고 소수의 다른 점들이 있을 때
개별적으로 클래스들을 따로 작성하는 것보다 abstract클래스를 이용하는 것이 효율적이기 때문이다.

---------------------Abstract 추가 설명---------------------

추상 클래스를 쓰는 이유는?
서로 다른 클래스들이 상당수의 공통된 점을 갖고 있지만,
소수의 다른점들이 있을때 이들의 공통된 점을 구성해놓고
각각의 다른 부분들만 구현하는 것이 효율적이기 때문.

추상클래스는 추상메서드를 포함하고 있다는 것을 제외하고는 일반클래스와 전혀
다르지 않다. 추상클래스에서도 생성자가 있으며, 멤버변수와 메서드도 가질 수 있다.

추상메서드
추상 메서드란 메서드를 부모클래스에 선언만 해놓고, 실제 수행될 내용은 작성하지 않는것이다.
그이유는 메서드의 내용이 자식 클래스에 따라 달라질 수 있기 때문이다.
따라서 추상클래스로부터 상속받는 자손클래스는 오버라이딩을 통해 부모클래스인 추상클래스의
추상메서드를 모두 구현해주어야 한다.

--------------------------------------------------------------------


Interface란
abstract Class의 한 종류로써, 기본적으로 abstract class가 가지는 특징을 가지고 있다.
또한 자바에서 유일하게 다중상속이 가능하다.

Interface가 가질수 있는 멤버
*public static final 멤버변수
-공유를 하며 값을 바꿀수 없는 static final 멤버 필드만 포함 할 수 있다.
-만약 static final을 적지 않는다 하더라도 자동으로 static final로 인식된다.
*public abstract 멤버 메서드
-자식 Class에서 Overroading 시 정의하기 나름이기 때문에 모호하지 않다.
-메소드에 abstract를 명시하지 않아도 abstract 메소드로 인식한다.
-자식 Class에서 Overroading시에는 abstract를 붙히면 안된다.
*public static inner 클래스

Interface를 상속받는 Class는 implements 예약어를 사용한다.
-----------------------------Interface 추가 설명-----------------------------------
interface
인터페이스는 일종의 추상클래스이다.

인터페이스와 추상클래스의 다른점은 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다.
오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다.
또한 자바에서 유일하게 다중상속이 가능하다.
또한 abstract클래스에서는 메서드에 abstract를 꼭 붙혀야 하지만,
Interface에서는 abstract를 안붙혀도 자동 인식되고, 멤버변수에 static final을 붙히지 않아도
자동인식된다.

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

팀장님 수업9  (0) 2012.07.06
팀장님 수업 8  (0) 2012.07.03
팀장님수업 6번째 보충자료(접근 제한자)  (0) 2012.06.22
팀장님수업6번째 보충자료 (캡슐화 은닉화)  (0) 2012.06.22
팀장님수업6  (0) 2012.06.22
posted by changhozz 2012. 6. 26. 11:21

예를들어

byte형은 8bit로 수의 범위가 -2의7승~2의7승 -1 (-128~ 127 -1) 까지 인데

-1을 해주는 이유는 0때문인다.

 0

뒷자리부터 2의0승 2의1승....2의6승까지 곱한뒤 더하여 2진수를 10진수로 바꾸는 것인데,

맨 앞자리는 부호를 뜻한다. 0이면 플리스 1이면 마이너스.

여기서 중요한것은

0은 양수 음수가 있지않다.

맨 앞자리가 0으로 플러스일때 0을 표현하려면

 

 맨 앞자리가 1로 마이너스일때 0을 표현하려면

 1

으로 두개가 되어버린다.

따라서 전체개수에서 -1을 빼주는 것이다. 

 

또한 음수로는 128까지고 양수로는 127인 이유는

 127을 음수로 바꾸려면 1의보수후 2의보수처리를하여 1을증가해서

-128이된다.

때문에 양수최대값보다 1큰것이 최소값이 되는것이다.

'JAVA > JAVA 공부' 카테고리의 다른 글

java.lang 패키지  (0) 2012.07.20
참조변수의 대한 설명  (0) 2012.06.29
JVM의 메모리 구조  (0) 2012.06.21
static 메서드  (0) 2012.05.22
public class  (0) 2012.05.22
posted by changhozz 2012. 6. 22. 16:42

 

 

 같은 클래스

같은 패키지 

Sub클래스 

다른 클래스 
 public

yes 

yes 

yes 

yes 

 protected

 yes

yes 

yes 

 

 default

yes 

yes 

 

 

 private

yes       

 

접근수정자

① public - 접근 제한이 없다. public 메서드는 어느곳에서든지 호출이 가능하다. 이것은 가장 공통적으로 사용되는 접근수정자이다.

② protected - 정의된 클래스내부에서 호출하거나 서브클래스 내부에서 호출되어질수있다. 또한 같은 패키지안에서 사용할수있다.

③ private - 정의된 클래스 내부에서만 호출되어질 수 있다, 내부적으로 클래스안에서만 사용된다.

④ default - 접근수정자가 기술되어 있지 않으면, 메서드는 default 접근이다.

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

팀장님 수업 8  (0) 2012.07.03
팀장님 수업 7  (0) 2012.06.29
팀장님수업6번째 보충자료 (캡슐화 은닉화)  (0) 2012.06.22
팀장님수업6  (0) 2012.06.22
팀장님수업5  (0) 2012.06.14
posted by changhozz 2012. 6. 22. 15:59
 캡슐화란?
= 하나의 클래스를 블랙박스화 하는 것

즉, 클래스 안에서 데이터에 해당하는 필드는 모두 Private으로 선언해서 외부에서 직접접근하지 못하게 만듬
외부에는 public으로 선언된 메소드(인터페이스)만을 공개하는 것

이렇게 어떤 클래스의 내부 데이터를 감춰놓고 외부에서는 오직 해당 클래스에서
제공하는 public 메소드(인터페이스)로만 그 객체의 내부 데이터를 변경 또는 제어할 수 있게 만드는 것을
캡슐화라고 한다.

= 다른 클래스에서 어떤 클래스의 기능을 사용할 때
그 내부의 구현에 대해 전혀 몰라도 된다는 것이다.

즉, 단지 공개된 인터페이스를 이용하면 그런 결과가 이뤄진다는 것을 보장하기만 하면 되는 것이다.

 

 

 

1. 은닉화(캡슐화)

자바의 객체는 속성 / 기능으로 이루어져있다. 이때 중요한 속성은 private 키워드로 숨겨놓고

기능해당하는 메소드에 public을 붙여 중요 속성(변수)에 접근하는 방법을 말한다.

즉 은닉화를 하면 변수에 직접적으로 접근을 하지 못한다 반드시 메소드를 통하여 하게 된다.

접근하는 메소드에는 2가지가 있다.

1. getter : 가져오는 녀석

2. setter : 셋팅하는 녀석

쉬운 예를 들어보자.

자판기가 있다 이 자판기에는 변수(커피,프림,컵)이 있고 기능(섞는)이 있다.

우리가 커피를 뽑을때 이 자판기의 변수에 직접 접근해서 섞어서 마시면 자판기의 의미가 없고,

시간도 낭비하며, 결과가 제대로 나오지 않을 수도 있다. 반면에 기능버튼을 누르기만 하면 우린

제대로 된 결과를 얻을 수 있다. 변수에 직접 접근하지 않고도 말이다. 이게 은닉화다.

캡슐화는 하나의 목적에 대한 모든 메서드가 하나의 클래스에 담겨하 한다는것이다.

계산기가 있다고 하자. 덧셈, 뺄셈 등 각 연산이 클래스마다 나뉘어져 있다면 사용이 불편할것이다.

class Info {

//정보에 해당하는 필드들(private) ; 다른 클래스에서 접근할 수 없도록..

private int age;

private String name;

//셋터와 겟터들(public) ; 다른 클래스에서 접근해서 사용하도록..

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

public class PeoPle {

public static void main(String[] args) {

new PeoPle().makePeople();

}

public void makePeople() {

Info pCho = new Info();

pCho.setName("조병덕");

pCho.setAge(27);

System.out.println(pCho.getName());

System.out.println(pCho.getAge());

그림에서 볼 수 있는데 필드에 접근을 할때 바로 객체.필드로 바로 접근하는것이 아니라 객체.get / set을 통하여 접근을 하는것이다. 이것은 자바의 목적중에 하나인 보안을 위해 매우 중요한 사항이다.

그러므로 중요한 필드에는 private를 붙이고 get과 set메서드를 활용하자!

 

 

따라서 은닉화란 캡슐화의 장점중에 하나로 속하는 것으로,

객체를 생성시 객체 내부에 있는 멤버 변수의 값을 접근 제한자를 이용하여 외부에 공개하지 않고 getter와 setter를 이용하여, 접근하는 Beans 방식을 은닉화라 한다.

 

 

 

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

팀장님 수업 7  (0) 2012.06.29
팀장님수업 6번째 보충자료(접근 제한자)  (0) 2012.06.22
팀장님수업6  (0) 2012.06.22
팀장님수업5  (0) 2012.06.14
팀장님수업4  (0) 2012.05.31
posted by changhozz 2012. 6. 22. 00:21

캡슐화(Encapsulation)란
1)객체지향의 특징
2)객체의 내부 변수를 수정했다 하더라도 사용하는
외부 객체에서는 이것을 인식하지못하며, 별다른 영향을
받지 않아 독립적인 면을 유지하는 장점이 있다.

은닉화(Black Box)
1)정보 은닉이라는 것은 캡슐화의 장점에 속하는 것이다.
2)객체를 생성시 객체 내부에 있는 멤버 변수의 값을 외부에
공개하지 않고 getter와 setter를 이용하여, 접근하는
Beans 방식을 은닉화라 한다.
3)외부에서의 접근 차단은 접근 제한자를 이용한다.

접근 제한자
Private : 현재 객체 내에서만 허용
Default : 같은 패키지(폴더)내에 있는 객체들만 허용
Protected : 같은 패키지(폴더)에 있는 객체와 상속 관계의 객체들만 허용
Public : 모든 접근을 허용

Private < Default < Protected < Public

오버라이딩(Overriding)
오버라이딩은 "메소드 재정의"라고도 불리며 서로 상속관계로
이루어진 객체 관계에서 부모 클래스가 가지는 메소드를 자식클래스에서
재정의 하는 것을 의미한다.

super란?
현재 객체의 super클래스를 참조한다.

super()란?
부모 객체내의 생성자를 의미한다.
특징: 반드시 생성자의 첫 행에 정의해야한다.
장점:super()를 이용하여 부모 클래스의 생성자를 호출 할 수 있다.

final
변수에 final을 적용시키면 프로그램이 끝날 때까지 값을
변경하지 못하는 상수화된다.

메서드에서의 final
메서드에 final을 적용하면 상속관계에 따른 오버라이딩 확장을
할 수 없게 된다.

클래스에서의 final
클래스에 final을 적용하면 더 이상 상속을 허용하지 않는
종단 클래스가 된다.

static
일반적으로 멤버변수 나 메서드들은 해당 객체가 생성될 때 객체가
생성된 메모리 공간에 같이 존재하게 되지만 static으로 선언된
메서드나 멤버변수들은 static 영역에 생성되면서 모든 객체들이
사용할 수 있도록 공유개념을 가진다.

static 변수로의 의미
1)static으로 선언되었으면 객체를 생성하지 않고도 사용할 수 있다.
2)static으로 선언된 변수는 모든 객체가 공유하는 변수가 된다.
3)객체를 생성하지 않고서도 접근 가능하다.

static 메서드의 의미
1)static 변수와 마찬가지로 모든 객체들이 사용할 수 있도록
공유개념을 가진다.
2)static 메서드 안에서는 static이 아닌 멤버변수들은 참조 할 수 없다.

 

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

팀장님수업 6번째 보충자료(접근 제한자)  (0) 2012.06.22
팀장님수업6번째 보충자료 (캡슐화 은닉화)  (0) 2012.06.22
팀장님수업5  (0) 2012.06.14
팀장님수업4  (0) 2012.05.31
팀장님 수업3  (0) 2012.05.24
posted by changhozz 2012. 6. 21. 14:22

 

 

JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고
JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.

JVM의 메모리구조는 메소드영역(Method area) 힙(Heap) 호출스텍(call stack)으로 구성되어있다.

1.메서드 영역(Method area)
메서드영역에는 JVM이 해당 클래스의 클래스파일(*.class)을 읽어서 분석하여
클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. 이 때, 그 클래스의 클래스변수(class variable)도
이 영역에 함께 생성된다.

2.힙(Heap)
힙은 인스턴스가 생성되는 공간으로, 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다.
즉 인스턴스변수(instanace variable)들이 생성되는 공간이다.

3.호출스택(call stack)
호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면,
호출스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을
수행하는 동안 지역변수(매개변수 포함)들과 연산의 중간결과 등을 저장하는데 사용된다.
그리고 메서드가 작업을 마치면 할당되었던 메모리공간은 반한되어 비워진다.
각 메서드를 위한 메모리상의 작업공간은 서로 구별되며, 첫 번째로 호출된 메서드를 위한 작업공간이
호출택의 맨 밑에 마련되고, 첫 번째 메서드 수행 중에 다른 메서드를 호출하게 되면, 첫 번째 메서드의
바로 위에 두 번째로 호출된 메서드를 위한 공간이 마련된다.
이 때 첫 번째 메서드는 수행을 멈추고, 두 번째 메서드가 수행되기 시작한다. 두 번째로
호출된 메서드가 수행을 마치게 되면, 두 번째 메서드를 위해 제공되었던 호출스택의 메모리공간이
반환되며, 첫 번째 메서드는 다시 수행을 계속하게 된다. 첫 번째 메서드가 수행을 마치면,
역시 제공되었던 메모리 공간이 호출스택에서 제거되며 호출스택은 완전히 비워지게 된다.
호출스택의 제일 상위에 위치하는 메서드가 현재 실행 중인 메서드이며, 나머지는 대기상태에 있게 된다.
따라서, 호출스택을 조사해 보면 메서드 간의 호출관계와 현재 수행중인 메서드가 어느것인지 알 수있다.

반환타입(return type)이 있는 메서드는 종료되면서 결과값을 자신을 호출한 메서드(caller)에게 반환한다.
대기상태에 있던 호출한 메서드(caller)는 넘겨받은 반환값으로 수행을 계속 진행하게 된다.

*메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당받는다.
*메서드가 수행을 마치고나면 사용했던 메모리를 반환하고 스택에서 제거된다.
*호출스택의 제일 위에 있는 메서드가 현재 실행 중인 메서드이다.
*아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드이다.


오르막 내르막 처럼 시작됐다 종료됨.
( 자신이 부른 위에 메소드가 수행을 마칠때 까지 대기하느라)

 

 

(1)~(2)위의 예제를 컴파일한 후 실행시키면, JVM에 의해서 main메서드가 호출됨으로써 프로그램이 시작된다. 이 때, 호출스택에는 main메서드를 위한 메모리공간이 할당되고 main메서드와 코드가 수행되기 시작한다.

(3)main메서드에서 firstMethod()를  호출한 상태이다. 아직 main메서드가 끝난 것은 아니므로 main메서드는 호출스택에 대기상태로 남아있고 firstMehtod()의 수행이 시작된다.

(4)firstMethod()에서 다시 secondMethod()를 호출했다. firstMethod()는 secondMethod()가 수행을 마칠 때까지 대기상태에 있게 된다. secondMethod()가 수행을 마쳐야 firstMethod()의 나머지 문장들을 수행할 수 있기 때문이다.

(5)secondMethod()에서 println메서드를 호출했다. println메서드에 의해서 'secondMethod()'가 화면에 출력된다.

(6)println메서드의 수행이 완료되어 호출스택에서 사라지고 자신을 호출한 secondMethod()로 되돌아간다. 대기 중이던 secondMethod()는 println메서드를 호출한 이후부터 수행을 재개한다.

(7)secondMethod()에 더이상 수행할 코드가 없으므로 종료되고, 자신을 호출한 firstMethod()로 돌아간다.

(8)firstMethod()에도 더 이상 수행할 코드가 없으므로 종료되고, 자신을 호출한 main메서드로 돌아간다.

(9)main메서드에서도 더 이상 수행할 코드가 없으므로 종료되어, 호출스택은 완전히 비워지게 되고 프로그램은 종료된다.

 

 

 

 

 

 

 

'JAVA > JAVA 공부' 카테고리의 다른 글

참조변수의 대한 설명  (0) 2012.06.29
수치형 범위  (0) 2012.06.26
static 메서드  (0) 2012.05.22
public class  (0) 2012.05.22
import , package  (0) 2012.05.21
posted by changhozz 2012. 6. 14. 17:52

오늘 수업내용

배열(Array) - 같은 자료형들끼리 모아두는 하나의 묶음을 뜻함.

장점:원하는 것을 한번에 찍을수있다.
단점:수정삭제가 힘들다.(배열들 사이에 새로운 내용을 추가하려면
다시만들어야된다. 삭제할 경우도 마찬가지)

초기화 - 생성시 값을 넣는것.

Primitive Type Array  -
Java의 Primitive Type과 같이 기본자료형들을 가지고 배열을 생성하는 것을 말한다.

Primitive Type의 종류 6가지
boolean, char
byte, short, int, long
       float, double


Reference Type Array -
배열 안의 자료값들이 기본 자료형이 아닌 객체의 주소가 맵핑 된다.
ex)
String [] arr =new String[3];

arr[0]="java";
arr[1]="Array";

Array Memory Allocation Method -
Stack에는 변수명이 들어가고
Heap에는 값(데이터)가 들어간다.

ex)

int [] a =null ;
int [] b =new int[4];
int [] c = {3,2,4,5};
변수명 a 는 Stack에 a라는 방에 메모리가 할당이 되지만
Heap에는 값이없으므로 공간이 할당되지 않음.
변수명 b 는 Stack에 b라는 방에 메모리가 할당이 되고
Heap에는 4개의 '0'값이 들어있는 방이 할당됨
변수명 c 는 Stack에 c라는 방에 메모리가 할당이 되고
Heap에는 4개의 방에 각각 3,2,4,5값이 들어간다.

 

 

-----------------------------------------------------------------------------

상속(Inheritance)이란?
부모가 소유하고 있는 재산의 일부를 자식이 물려받는 것을 말한다.
객체지향의 개념에서는 클래스 간의 관계라 할 수 있다.

has a - 특정 객체 내에서 다른 객체를 가지고 있는 것을 의미한다.
is a - 특정 객체가 다른 객체에게 자신의 능력을 포함시켜주는 상속관계를 의미한다.

Java에서 상속의 특징!
1) 단일 상속만 가능하다.(다중 상속 불가능)
부모클래스는 자식클래스를 여러개 갖을 수 있지만
자식클래스는 부모클래스를 하나만 상속받을 수 있다.
2)java.lang.Object를 무조건 상속받도록 되어있다.


Base Class (기본클래스)    상속을 주기위해 준비된
Super Clss (슈퍼 클래스)                 <--     특정 클래스를 의미
Parent Calss (부모 클래스)


Derivation Class(유도 클래스)                     특정 클래스로 부터
Sub Class (하위 클래스)               <--       상속을 받아 새롭게 정의되는
Child Class (자식 클래스)                           클래스를 위미한다.


상속의 코드 구성

class sub클래스명 extends super클래스명 {
}


상속의 장점
1)잘 설계된 클래스를 재사용 가능하다.
2)재사용으로 인해 코드의 간결성이 높아진다.
3)잘 정의돈 super클래스가 있다면, sub클래스의 작성이 간편해지고,
개발 시간이 단축 된다.


더블클릭하고 F3누르면 상속받은곳 클래스로 이동
Alt + 화살표 = 상속되고 받은 클래스 이동

 

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

팀장님수업6번째 보충자료 (캡슐화 은닉화)  (0) 2012.06.22
팀장님수업6  (0) 2012.06.22
팀장님수업4  (0) 2012.05.31
팀장님 수업3  (0) 2012.05.24
팀장님 수업 1  (0) 2012.05.17
posted by changhozz 2012. 5. 31. 00:17

Integer.parseInt(String s)  - 문자열을 숫자로 계산해줌.

ex)MethodOverload test = new MethodOverload();
      test.plus("1", "2", "3");

 public void plus(String a, String b, String c) {
    int x = Integer.parseInt(a);
    int y = Integer.parseInt(b);
    int z = Integer.parseInt(c);
    System.out.println(x+y+z);
   }

console = 6

'JAVA > 여러가지 메서드' 카테고리의 다른 글

IndexOf , Substring  (0) 2012.07.20
기본형 ㅡ>문자열 , 문자열 ㅡ>기본형  (0) 2012.07.20
int를 String으로 parse  (0) 2012.07.20
Collection  (0) 2012.07.17
랜덤  (0) 2012.07.11
posted by changhozz 2012. 5. 31. 00:07


new = 객체의 데이터가 저장될 메모리공간을 할당해 주기위해 사용되는 연산자이다.

오버로딩이란?
★하나의 클래스 내에★ 인수의 개수나 형이 다른 동일한 이름의 메소드및 생성자를 여러 개
정의하는것.

오버로딩 - Method 오버로딩
         - Constructor 오버로딩
------------------Method 오버로딩--------------------
ex ) setDate(년,월,일)
     setDate(월,일)
ex )  public void plus (int a, int b){
 System.out.println(a+b);
}
      public void plus (int a, int b, int c){
 System.out.println(a+b+c); 
}

파라미터의 개수, 형에 따라서..

static이 붙어있으면 객체를 생성안하고 부를수있음.
class명.메소드명

-----------------Constructor 오버로딩-----------------
오버로딩은 생성자를 이용하여 객체를 생성시에도
적용 가능함.

public class Mp3 {

public String color = "";
public int price = 0;

public Mp3(){
}               <---------default 생성자

public Mp3(String param1, int param2){
this.color=param1;
this.price=param2;
}


public static void main(String args [] ){
Mp3 mp3_1 = new Mp3();

Mp3 mp3_2 = new Mp3("red",10000);
}

-------------------------------------------------
this란 특정 객체 내에서 현재 객체 자신을 의미하는 참조 변수이다.

this는 자기자신 클래스를 가르킴  ==> ThisTest
this를 쓰는 이유는 명확하게 하기위해서.


 this.a = a;
  멤버변수a에┘  └피라미터 a를 넣어라.

------------------------------------------------
this() 란?
"현재 객체내의 생성자를 의미한다."
반드시 생성자의 첫 행에 정의해야한다. (다음행에는 무엇이오든 상관없음)
장점 : this()를 이용하여 한 클래스 내의 특정생성자에서
오버로딩되어있는 다른 생성자를 호출 할 수 있다.

public class ThisConstr{

public ThisConstr(){
 this("");           
}                            //②default 생성자 호출후
                                 오버로딩된 또 다른 생성자호출.
                                  ""<-이것은 문자열을 의미하므로  
                                  String형 생성자를 호출한다.
 
public ThisConstr(String a){
 System.out.println("ThisConstr(String a)생성자 호출");
} // ③String형 생성자가 호출되어 Sysout된 내용을 출력.


public ThisConstr(int a){
 System.out.println("ThisConstr(int a)생성자 호출");

}

public static void main(String args [] ) {
 ThisConstr con = new ThisConstr();   //①ThisConstr클래스에 con이란
}            객체를 생성하면서 파라미터값이
}            없으므로 default 생성자를 호출함.
           

this();  ==>  자기자신 생성자를 호출함.
그러나 의미가 없다.
계속 자기자신만 호출하는것이므로.
this(""); ==> 이런식으로
다른 생성자를 호출하는거임.

----------------------------------------------------------------------


파라미터를 이용하여 실행시 arguments를 입력 받을수있다.
Run -> Run Configurations -> Arguments -> Program arguments 에 입력.
띄어쓰기를 기준으로 각 Index에 저장됨.

[Java 실행시 Arguments 입력하여 실행방법]
java (클래스명) (인수1) (인수2) (인수3)···

ex)
C:> javac Test.java
C:> java Test red color blue
  
----------------------------------------------------------------------
입력후 정렬 하는 습관!
Ctrl + Shift + f

작성후 저장하는 습관!
Ctrl + s

 


----------------------------------------------------------------------

 

default 생성자(default constructor)

default 생성자는 인자도 없고 내용도 없는 생성자인데,

객체가 생성 될 때 반드시 생성자가 호출되어야 하므로, 클래스에 생성자가

하나도 선언되어있지 않으면 컴파일러가 default 생성자를 자동을 생성한다.
 
하지만, 생성자가 하나라도 존재하는 클래스에는

자동으로 기본 생성자가 삽입되지 않는다.

 
---------------------------------------------------------------------


용어!

argument - 인수
unsign - 부호가없는
parse - 분석하다
radix - 진법
api = documentation

 

'JAVA > 팀장님 JAVA수업' 카테고리의 다른 글

팀장님수업6  (0) 2012.06.22
팀장님수업5  (0) 2012.06.14
팀장님 수업3  (0) 2012.05.24
팀장님 수업 1  (0) 2012.05.17
팀장님 수업 2  (0) 2012.05.17