본문 바로가기

JAVA/변수 및 객체, 기타

클래스

1. 클래스

 

변수 : 1개의 자료형, 1개의 데이터

 

배열 : 1개의 자료형, 여러개의 데이터

 

구조체 : 여러개의 자료형,  여러개의 데이터

 

클래스 : 구조체(각 객체의 속성들) + 기능들

 

-> 클래스및 속성에 있는 접근제한자를 통해 접근제한의 범위를 지정 해 줄 수있다.

 + 기능들(메소드)를 통해 값에 접근 할 수 있다.

 

 

 

2.클래스 선언

 

 

접근제한자 [예약어] class클래스명{

 

    접근제한자 [예약어]  자료형 변수명;  -> 속성값

 

    1) 기본생성자

    접근제한자 클래스명(){

 

    }

 

    2)매개변수 생성자

    접근제한자  클래스명(자료형 변수명, 자료형 변수명.....){ ()안의 자료형 변수명을 묶어서 매개변수라고 한다.

           //변수정의(단 선언해준 것들만 가능)

    }

    3)초기화블럭 (static 블럭은 일반 초기화 블럭 뒤에 적으며, static 블록에는 일반 속성값을 초기화 할 수 없다.)

    [static]{

        초기화할 변수 = 값;

     }

 

    4)메소드(기능 정의 설정)

   접근제한자 [예약어] 리턴형 메소드명([매개변수]){

       //기능정의

    } 

}

1)속성이 없이 메소드만으로 이루어진 클래스도 만들 수 있다.

 

2)의 경우 아무것도 없을땐 JVM에서 자동으로 생성되나 , 매개변수 생성자가 있을 경우 따로 명시해 주어야 하며,

생성자 안에서도 변수의 초기값을 설정해 줄 수 있다.

 

3)번의 경우 생성자에서 위에서 초기화 값을 지정해도 밑의 초기화 필드에서 값을 넣기 때문에 초기화 필드의 값이 저장된다. 단 초기화 필드는 생략이 가능하다.

 

4)메소드의 경우 없어도 상관 없으나, private 속성값이 있을경우 getter/setter 메소드가 있어야 접근/변경이 가능해진다. 또한 다른 클래스에서 상속받아 쓸 메소드들을 적을 수 있다.

 

3. 클래스의 접근제한자

(기호 : 의미)

+ : public 전체 접근가능  ex) public class 클래스명

~ : default 같은 패키지만 접근가능 ex) calss 클래스명

 

4. 속성및 메소드의 접근제한자.

+ : public 전체 접근가능 ex) public String name;

# : protected 같은 패키지내 + 상속중인 클래스 ex) protected String phone;

~ : default 같은 패키니재 ex) int pNum;

- : private 자기 자신만 ex) private char gender;

 

5. 생성자

new 를 통해 객체가 생성될 때 바라보는 위치

 

1) 생성자 사용 목적
  ㄱ)객체를 생성해 주기 위한 목적
  ㄴ) 매개변수로 전달 받은 값으로 필드를 초기화 할 목적
   
2)생성자 사용시 주의사항
 ㄱ) 반드시 클래스명과 동일해야 한다.(대/소문자  구분)
 ㄴ)리턴형이 존재하지 않는다.(생성할 뿐 반환 자체가 없다. (void포함 )
 3)매개변수 생성자 작성시 기본생성자는 반드시 작성해야 한다.
  (매개변수 생성자 작성시 기본생성자는 JVM이 자동으로 등록해주지 않는다.) 

 

3)생성자의 종류 

ㄱ) public 클래스(){

}

기본생성자 : 필드에 초기화 역할은 수행하지 못하고 객체만 생성할 때 사용.

->생성자 미작성시 JVM이 자동으로 등록해주나, 매개변수 생성자가 있을 경우 JVM 생성을 안해주기에 반드시 명시를 해줘야 한다.(-> 이것을 바라보는 객체가 에러가 나며, 상속때 오류가 난다.)

같은 이름의 생성자 혹은 메소드의 경우 에러가 발생한다.

 

ㄴ)public 클래스(자료형 변수명, 자료형 변수명, 자료형 변수명,.....){

 this(변수명, ...);

 this.전역변수명 = 매개 변수명;

 this.전역변수명 = 값;

}

 

매개변수 생성자 : 필드값 초기화 및 객체 생성시 사용

객체 생성시 매개변수가 있을경우 바라보는 위치.

지정해둔 매개변수의 값에 따라 바라보는 위치가 달라지며, 생성시 매개변수의 값이 생성자의 매개변수와 맞는 것이 없으면 생성되지 않는다.

 

ex) 생성자

클래스(String var1, int var2, String var3){

   this.var1= var1;

   this.var2 = var2;

   this.var3 = var3

}

 

클래스 객체1 = new 클래스("값", 1 , "값");

  -> 위의 생성자와 매개변수의 타입이 일치하기에  속성에  매개변수의 값들을 가지는 객체 생성

클래스 객체2 = new 클래스("값", "값", 1 );

 -> 위의 생성자와 매개변수의 타입이 일치하지 않기에 생성 불가

 

this
  메소드내에 숨겨진채 존재하는 레퍼런스 변수로, 할당된 객체 자신을 의미한다. 
  만약 지역변수(매개변수)와 필드(멤버변수)가 이름이 같을 경우 지역변수를 우선 시 되기 때문에. 
  필드를 구분하기 위해서 this. 을 명시해주어야 한다.

 

 중복되는 초기화 하는 내용의 다른 생성자가 자신보다 위에 존재하면 첫줄에 this()생성자를 사용해 묶을 수 있다.

 

 

ex)

public User() {

}

 

public User(String userId, String userPwd, String userName) {
    this.userId = userId;
    this.userPwd= userPwd;
    this.userName = userName;

}

 

public User(String id, String pwd, String name, Date date) {

    this(id,pwd,name); -> 위의 생성자에서  썼던 중복 변수들 / 위처럼 this. 으로 개별로 지정해줘도 가능하다.

    this.enrollDate = date; -> 없는 생성자이니 반드시 this.으로 작성해야 한다.

}

'JAVA > 변수 및 객체, 기타' 카테고리의 다른 글

객체지향 3대 특성  (0) 2019.12.15
클래스의 변수  (0) 2019.12.15
객체란  (0) 2019.12.15
연산자  (0) 2019.12.13
JAVA메모리구조 와 출력 메소드  (0) 2019.12.12