검수요청.png검수요청.png

"필드 (자바)"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글 (활용)
잔글 (특징)
7번째 줄: 7번째 줄:
  
 
필드의 경우 다른 지역변수들과 다르게 초기화를 하지 않아도 기본값이 자동으로 초기화 된다는 특징을 가지고 있다. String의 경우 null, int의 경우 0으로 초기화 된다. 그리고 해당 [[클래스]] 내의 모든 [[메소드]]에 접근이 가능하다.
 
필드의 경우 다른 지역변수들과 다르게 초기화를 하지 않아도 기본값이 자동으로 초기화 된다는 특징을 가지고 있다. String의 경우 null, int의 경우 0으로 초기화 된다. 그리고 해당 [[클래스]] 내의 모든 [[메소드]]에 접근이 가능하다.
생성의 경우 객체가 생성될 때 함께 생성되며, 생성된 객체를 더 이상 참조하지 않을 때 가비지 컬렉터(Garbage Collector)에 의해서 제거된다.
+
생성의 경우 객체가 생성될 때 함께 생성되며, 생성된 객체를 더 이상 참조하지 않을 때 가비지 컬렉터(Garbage Collector)에 의해서 제거된다.<ref name="개인블로그">JOKER, 〈[https://blog.naver.com/heartflow89/220956313502 자바 필드(field)-전역변수,멤버변수]〉, 《개인블로그》, 2017-03-13</ref>
<ref name="개인블로그">JOKER, 〈[https://blog.naver.com/heartflow89/220956313502 자바 필드(field)-전역변수,멤버변수]〉, 《개인블로그》, 2017-03-13</ref>
+
 
 +
필드를 선언 할 때는 접근 지정자, 필드의 타입, 필드의 이름 세가지를 정해줘야 한다. 접근 지정자에는 public과 private가 있으며, public은 모든 클래스로 부터 접근 가능, private는 클래스 내부에서만 접근이 가능하며 이 외에는 접근이 불가능하다.<ref name="개인블로그3">Yown, 〈[https://luckyyowu.tistory.com/193 Java 08 : 필드와 메소드]〉, 《개인블로그》, 2014-07-30</ref>
 +
 
 +
필드는 객체의 고유 데이터, 객체가 가져야할 부붐, 객체의 현재 상태 데이터를 저장한다. 자동차를 예로 들 때 자동차에 필요한 고유 데이터는 제작회사, 모델명, 색, 최고 속도가 필요하고 현재 속도, 엔진 회전 수의 상태 데이터와 차체, 엔진, 타이어와 같은 부품이 필요하다가 필요하다. 이런 자동차를 클래스로 설계 할 때 이전에 말한 정보들은 클래스의 필드로 선언이 된다.
 +
 
 +
public class Car {
 +
  //고유 데이터
 +
String 회사;
 +
String 모델;
 +
String 색;
 +
int 최고속도;
 +
 +
  //상태
 +
int 현재 속도;
 +
int 엔진 회전수;
 +
 
 +
  //부품
 +
  Body 차체;
 +
  Engine 엔진;
 +
  Tire 타이어;
 +
}
 +
 
 +
위와 같은 형태로 정보들을 필드로 선언해 클래스를 사용할 때 편하게 정보를 변경할 수 있다.<ref name="개인블로그4">kephl, 〈[https://kephilab.tistory.com/46 3. Java 자바 - 클래스의 구성 멤버]〉, 《개인블로그》, 2020-05-15</ref>
  
 
==활용==
 
==활용==

2020년 8월 6일 (목) 15:51 판

필드(field)란 클래스를 구성하는 요소 중 하나로 클래스 내부 멤버이다. 어떠한 데이터를 저장하기 위한 역할을 담당하며 클래스 내부의 생성자와 메소드 밖에 정의가 된다.

개요

필드는 클래스에서 내부 멤버이기 때문에 멤버 변수라고도 불리며, 클래스 내 전역에서 사용하기 때문에 전역 변수라고도 불리며 데이터를 저장하기 위한 역할을 담당하며 생성자와 메소드 밖에서 사용한다. 즉 필드란 클래스 안에서 독립적으로 선언되는 변수를 뜻한다.[1]

특징

필드의 경우 다른 지역변수들과 다르게 초기화를 하지 않아도 기본값이 자동으로 초기화 된다는 특징을 가지고 있다. String의 경우 null, int의 경우 0으로 초기화 된다. 그리고 해당 클래스 내의 모든 메소드에 접근이 가능하다. 생성의 경우 객체가 생성될 때 함께 생성되며, 생성된 객체를 더 이상 참조하지 않을 때 가비지 컬렉터(Garbage Collector)에 의해서 제거된다.[2]

필드를 선언 할 때는 접근 지정자, 필드의 타입, 필드의 이름 세가지를 정해줘야 한다. 접근 지정자에는 public과 private가 있으며, public은 모든 클래스로 부터 접근 가능, private는 클래스 내부에서만 접근이 가능하며 이 외에는 접근이 불가능하다.[3]

필드는 객체의 고유 데이터, 객체가 가져야할 부붐, 객체의 현재 상태 데이터를 저장한다. 자동차를 예로 들 때 자동차에 필요한 고유 데이터는 제작회사, 모델명, 색, 최고 속도가 필요하고 현재 속도, 엔진 회전 수의 상태 데이터와 차체, 엔진, 타이어와 같은 부품이 필요하다가 필요하다. 이런 자동차를 클래스로 설계 할 때 이전에 말한 정보들은 클래스의 필드로 선언이 된다.

public class Car {
 	//고유 데이터
	String 회사;
	String 모델;
	String 색;
	int 최고속도;

 	//상태
	int 현재 속도;
	int 엔진 회전수;
 	
 	//부품
  	Body 차체;
 	Engine 엔진;
 	Tire 타이어;
}

위와 같은 형태로 정보들을 필드로 선언해 클래스를 사용할 때 편하게 정보를 변경할 수 있다.[4]

활용

자바에서 필드를 사용하기 위해서는 코드 내에 선언을 해주어야 한다.

활용 위치

필드 위치

클래스 내의 필드는 멤버 변수 혹은 전역 변수라고도 하기 때문에 클래스 내부 중괄호 안 어느 위치에서나 선언이 가능하다. 하지만 메소드 혹은 생성자의 밖에 선언되어야 한다. [5]


public class 클래스이름 {
	
	int a; //필드선언
	
	//메소드
	public void method(){
	 	int a; //지역변수
	}
}

활용 방법

필드 선언의 필수 입력 사항은 자료형과 변수명이며 이 외의 접근제한자나 static 등의 사항들은 목적에 따라 추가 할 수 있다. 필드의 경우 초기값을 선언하지 않아도 자동으로 초기값을 가지기 때문에 초기값을 지정해지 주지 않고 사용해도 에러가 발생하지 않으며, 자동으로 가지게 되는 초기값은 '0'과 같다.

필드타입종류[6]
분류 데이터 타입 초기값
정수타입 byte 0
char \u0000(빈 공백)
short 0
int 0
long oL
실수타입 float 0.0F
double 0.0
논리타입 boolean false
참조타입 배열

클래스 (String 포함)

인터페이스

null

목적에 따른 추가 방법

public class 클래스이름 {
	
	public static int a; // 접근제한자 + 정적 + 자료형 + 변수명 + ;필드선언
 
}

초기값을 주지 않는 경우

public class 클래스이름 {
	
	int a; //필드선언
	
}

초기값을 주는 경우

public class 클래스이름 {
	
	int a=10; //필드선언
	
}

위 코드에서 선언한 필드 a의 값은 설명과 동일하게 0으로 나오며 string의 경우 null, boolean의 경우 false 형태와 같이 자료형에 맞는 초기값을 가지게 된다.

접근 방법

필드에 접근하기 위한 방법은 다양하다. 클래스를 이용해 새로운 객체를 만들어 객체 내의 필드를 사용하기 위해서는 아래와 같은 방식을 사용한다.

class human {
	int kg;
	int cm;
}

위와 같은 human 클래스가 있을 때 새로운 객체를 생성해 사용하기 위해서는 '객체명.필드명' 형태를 갖추어야 한다.

human이라는 클래스의 객체를 사용하는 예이다.

public class example {
	public static void main(String[] args){
	 	human hu1 = new human();
	 	//human 객체를 생성
	 	
	 	hu1.kg=70;
	 	hu1.cm=170;
	 	//hu1의 kg과 cm이라는 필드에 값을 넣음
	 	
	}
}

위와 같이 필드에 값을 추가할 수 있다.

또한 클래스 내부 메소드에서 필드 변수를 사용가능하다. 하지만 메소드 내의 지역변수와 필드 변수의 변수명이 같을 시 메소드 내의 지역변수를 우선순위로 하며, 만약 필드를 사용하고 싶다면 변수명 앞에 'this.'를 사용한다면 필드 변수를 사용할 수 있다.

class human {
	int kg;
	int cm;
	public void example(){
	 	int kg=100;
	 	
	 	this.kg=70;
	}
	public static void main(String[] args){
	 	example();
	}
}

위와 같이 작성 시 example 내의 kg은 100이라는 숫자가 들어가고 human의 kg은 70이라는 값이 나오게 된다.

각주

  1. Velvet, 〈필드와 변수〉, 《개인블로그》, 2015-07-12
  2. JOKER, 〈자바 필드(field)-전역변수,멤버변수〉, 《개인블로그》, 2017-03-13
  3. Yown, 〈Java 08 : 필드와 메소드〉, 《개인블로그》, 2014-07-30
  4. kephl, 〈3. Java 자바 - 클래스의 구성 멤버〉, 《개인블로그》, 2020-05-15
  5. Ara Blog, 〈자바(Java)〃필드와 변수의 선언위치와 초기값(전역변수,지역변수)〉, 《개인블로그》, 2015-11-02
  6. devuna, 〈클래스(class) 선언방법/필드/생성자〉, 《개인블로그》, 2019-12-01

참고자료

같이 보기


  검수요청.png검수요청.png 이 필드 (자바) 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.