언어/java

[JAVA] 은닉화 및 접근제어자, 생성자

STUFIT 2023. 4. 16. 13:42
반응형

1. 은닉화 및 접근제어자

자바에서는 public 과 private 라는 접근제어자가 존재한다.

public 은 모든 클래스에서 해당 맴버변수를 호출할 수 있으며, private 는 해당 클래스 내에서만 호출이 가능하다.

그러나, 만약 private의 맴버변수를 다른 클래스에서도 호출하고 싶다면, getter 와 setter 를 이용하면 된다.

getter 는 private의 맴버변수를 다른 클래스에서 해당 값을 가져오며, setter는 private 의 맴버변수에 값을 넣을 때 사용 된다.

getter 와 setter 를 쉽게 정의하는 방법은 인텔리제이에서 command + N 을 누르면 쉽게 정의 가능하다.

package kr.co.infopub.chapt018;

public class Geo {
    // 은닉화와 접근제한자
    // public 일 경우
//    public double latitude;
//    public double longitude;
    // private 일 경우
    private double latitude;
    public double longitude;

    // private 일 경우 다른 클래스에서 맴버변수로 접근할 수 없다.
    // 그래서 이럴 경우에넌 getter 와 setter 를 사용하여 맴버변수 값을 사용한다.

    // getter -> 맴버변수를 외부에 노출시킬 때 getter
    public double getLatitude() {
        return latitude;
    }

    // setter -> 맴버변수에 값을 넣을 때 setter
    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }

    public double getLongitude() {
        return longitude;
    }

    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }
}
package kr.co.infopub.chapt018;

public class GeoMain {
    public static void main(String[] args) {
        // [1]  Geo 가 public 일 경우
        /*
        Geo geo1 = new Geo();
        geo1.latitude = 37.1234;
        geo1.longitude = 127.4241234;
        System.out.println(geo1.latitude);
        System.out.println(geo1.longitude);
         */
        // [2] Geo 가 private 일 경우
        Geo geo1 = new Geo();
        geo1.setLatitude(37.1234); // 값 넣기
        geo1.setLongitude(127.4241234);
        System.out.println(geo1.getLatitude()); // 값 가져오기
        System.out.println(geo1.getLongitude());


    }
}

2. 생성자

생성자는 객체를 생성하면서 맴버변수에 값을 넣고 싶을 때, 생성자를 사용한다. 생성자는 new 키워드에 의해서만 호출되는 메서드이다.

이전에는 set 메서드를 통해 맴버변수에 대입할 수 있었는데, 객체생성과 동시에 값을 대입하게 할 때 생성자를 사용한다.

생성자는 가장 먼저 호출되어 객체를 사용하기 위한 기본준비를 하는 "리턴이 없는(void) 메서드이다."

package kr.co.infopub.chapt018;
public class Geo {
	private double test;
    private double test2;
    
    public Geo(double test, double test2) {
    	this.test = test;
        this.test2 = test2;
    }
    
     public double getTest() {
        return teste;
    }

    // setter -> 맴버변수에 값을 넣을 때 setter
    public void setTest(double test) {
        this.test = test;
    }

    public double getTest2() {
        return test2;
    }

    public void setTest2(double test2) {
        this.test2 = test2;
    }
}
packge kr.co.infopub.chapt018;
public class GeoMain {
	public static void main(String[] args){
    	Geo geo1 = new Geo(37.123, 123.23) // 인자가 2개인 생성자
    }
}
반응형

'언어 > java' 카테고리의 다른 글

HashSet & HashMap  (0) 2023.09.08
ArrayList & LinkedList  (0) 2023.09.05
인터페이스(Interface)  (0) 2023.08.28
언어특징 및 개발환경  (0) 2023.08.11
[JAVA/자바] 메소드 오버라이딩  (0) 2023.04.02