본문 바로가기
JAVA

[JAVA] - 객체의 속성 : 필드

by nam_ji 2024. 1. 12.

 

 

 

객체의 속성 : 필드

필드란

  • 필드는 객체의 데이터를 저장하는 역할을 합니다.
    • 객체의 필드는 크게 고유한 데이터, 상태 데이터, 객체 데이터로 분류할 수 있습니다.
    • 이처럼 자동차 객체는 4개의 고유한 데이터와 3개의 상태 데이터 그리고 3개의 객체 데이터를 가질 수 있습니다.
      • 이 3개의 객체 데이터를 자동차를 만들기 위한 부품 데이터라고 이해해도 좋습니다.
    • 자동차 클래스
      • 자동차 클래스를 만들어 보겠습니다.
        • 일단 먼저 자동차를 만들기 위한 부품인 타이어, 차문, 핸들 클래스를 만들겠습니다.
          • 부품 데이터
            더보기
            public class Tire {
                public Tire() {}
            }​​

             

            차문 클래스
            public class Door {
                public Door() {}
            }​

             

            핸들 클래스
            public class Handle {
                public Handle() {}
            }​이어 클래스
        • 부품 데이터와 나머지 고유한 데이터, 상태 데이터를 포함한 자동차 클래스를 만들겠습니다.
          • 자동차 클래스
          • 더보기
            public class Car {
            
                String company; // 자동차 회사
                String model; // 자동차 모델
                String color; // 자동차 색상
                double price; // 자동차 가격
            
                double speed;  // 자동차 속도 , km/h
                char gear; // 기어의 상태, P,R,N,D
                boolean lights; // 자동차 조명의 상태
            
                Tire tire;
                Door door;
                Handle handle;
            
                public Car() {} // 기본 생성자
            
                double gasPedal(double kmh) {
                    speed = kmh;
                    return speed;
                }
            
                double brakePedal() {
                    speed = 0;
                    return speed;
                }
            
                char changeGear(char type) {
                    gear = type;
                    return gear;
                }
            
                boolean onOffLights() {
                    lights = !lights;
                    return lights;
                }
            
            		void horn() {
            		    System.out.println("빵빵");
            		}
            }
        •  

필드의 초기값과 초기화

  • 우리가 정의하여 선언한 클래스의 필드들은 기본적으로 초기값을 제공하지 않을 경우 객체가 생성될 때 자동으로 기본값으로 초기화됩니다.
    • 초기값을 제공하는 방법은 ‘필드타입 필드명 = 값;’ 이렇게 직접 초기화 할 수 있습니다.
      • String model = "Gv80";
  • 필드 타입별 기본값
    데이터 타입 기본값
    byte 0
    char \u0000 (공백)
    short 0
    int 0
    long 0l
    float 0.0f
    double 0.0
    boolean false
    배열 null
    클래스 null
    인터페이스 null

필드 사용법

  • 필드를 사용한다라는 의미는 필드의 값을 변경하거나 읽는 것을 의미합니다.
    • 우리가 클래스에 필드를 정의하여 선언했다고 해서 바로 사용할 수 있는 것은 아닙니다.
    • 클래스는 설계도일 뿐 실제로 필드의 데이터를 가지고 있는 것은 객체입니다.
    • 따라서 객체를 생성한 후에 필드를 사용할 수 있습니다.
  • 외부 접근
    • Car car = new Car();
      • 이렇게 객체를 생성했다면 우리는 참조변수 car를 이용하여 외부에서 객체 내부의 필드에 접근하여 사용할 수 있습니다.
      • 이때 객체의 내부 필드에 접근하는 방법은 도트(.) 연산자를 사용하면 됩니다.
        • car.color = "blue";
  • 내부 접근
    • 도트 연산자를 사용하여 외부에서 객체 내부에 접근할 수 있을 뿐만 아니라 객체 내부 메서드에서도 내부 필드에 접근할 수 있습니다.
      double brakePedal() {
          speed = 0;
          return speed;
      }​
    • 이처럼 brakePedal()메서드 내부에서 객체의 필드 speed를 바로 호출해서 사용할 수 있습니다.

예제

  • 자동차 클래스
  • 더보기
    public class Car {
    
        String company; // 자동차 회사
        String model = "Gv80"; // 자동차 모델
        String color; // 자동차 색상
        double price; // 자동차 가격
    
        double speed;  // 자동차 속도 , km/h
        char gear; // 기어의 상태, P,R,N,D
        boolean lights = true; // 자동차 조명의 상태
    
        Tire tire = new Tire();
        Door door;
        Handle handle;
    
        public Car() {} // 기본 생성자
    
        double gasPedal(double kmh) {
            speed = kmh;
            return speed;
        }
    
        double brakePedal() {
            speed = 0;
            return speed;
        }
    
        char changeGear(char type) {
            gear = type;
            return gear;
        }
    
        boolean onOffLights() {
            lights = !lights;
            return lights;
        }
    
    		void horn() {
    		    System.out.println("빵빵");
    		}
    }
    • model 필드 값에 “Gv80” 초기값을 주겠습니다.
    • lights 필드 값에 true 초기값을 주겠습니다.
    • tire 필드 값에 new Tire()초기값을 주겠습니다.
    • main 메서드에 사용하여 테스트 해보겠습니다.
  • Main 메서드
  • 더보기
    public class Main {
        public static void main(String[] args) {
            Car car = new Car(); // 객체 생성
    
            // 초기값과 기본값 확인하기
    
            System.out.println("car.model = " + car.model); // 초기값 "Gv80"이 출력됩니다.
            System.out.println("car.color = " + car.color); // 기본값 null이 출력됩니다.
            System.out.println();
    
            System.out.println("car.speed = " + car.speed); // 기본값 0.0이 출력됩니다.
            System.out.println("car.gear = " + car.gear);  // 기본값 \u0000(공백)이 출력됩니다.
            System.out.println("car.lights = " + car.lights); // 초기값 true가 출력됩니다.
            System.out.println();
    
            System.out.println("car.tire = " + car.tire); // 초기값 인스턴스의 주소가 출력됩니다.
            System.out.println("car.door = " + car.door); // 기본값 null이 출력됩니다.
            System.out.println();
    
            // 필드 사용
    
            car.color = "blue"; // 필드 color에 "blue" 데이터를 저장합니다.
            car.speed = 100;    // 필드 speed에 100 데이터를 저장합니다.
            car.lights = false; // 필드 lights에 false 데이터를 저장합니다.
    
            System.out.println("car.color = " + car.color); // 저장된 "blue" 데이터가 출력됩니다.
            System.out.println("car.speed = " + car.speed); // 저장된 100.0 데이터가 출력됩니다.
            System.out.println("car.lights = " + car.lights); // 저장된 false 데이터가 출력됩니다.
    
        }
    }

'JAVA' 카테고리의 다른 글

[JAVA] - 접근제어자란?  (0) 2024.01.23
[JAVA] - 클래스란  (0) 2024.01.23
[JAVA] - 객체 생성과 참조형 변수  (0) 2024.01.12
[JAVA] - 클래스 설계  (0) 2024.01.12
[JAVA] - Enum 클래스란?  (1) 2024.01.11