본문 바로가기
C#

C#기초 - 접근 제한자 (public vs private),(Getter,Setter 사용법)

by 고체물리학 2021. 5. 27.

접근 제한자

 - 클래스, 메서드, 변수에 대한 접근 범위를 제한하는 키워드

 

< public vs private >
 1. private 접근제한자
=> 자신의 클래스 내에서만 접근이 가능하고, 다른 외부 클래스에서는 접근이 불가능하도록 제한
     (주로, 멤버변수에 private 접근제한자를 사용하여 값을 변경하지 못하도록 제어)

2. public 접근제한자
=> 모든 클래스에서 접근이 가능(접근 제한이 없음)
(주로, 멤버메서드에 public 접근제한자를 사용하여 누구나 접근하도록 제어)

Getter/Setter 정의
클래스 내에서 멤버변수는 주로 private 접근제한자를 통해 외부에서 접근을 금지시킴
 => 따라서, 별도의 메서드(Getter/Setter)를 정의하여 멤버변수 값을 대신 접근하도록 한다.


모든 Getter/Setter 메서드는 접근제한자를 public 으로 지정(누구나 접근할 수 있도록)
1. Getter : 클래스 내부의 멤버변수 값을 외부로 대신 리턴하는 역할의 메서드
 => 메서드명은 주로 getXXX() 으로 지정(XXX : 리턴할 데이터의 변수명)
 => 매개변수는 없고, 리턴값만 있는 메서드로 정의

2. Setter : 외부로부터 데이터를 전달받아 클래스 내부의 멤버변수에 저장하는 역할의 메서드
 => 메서드명은 주로 setXXX() 으로 지정(XXX : 저장할 데이터의 변수명)
 => 매개변수만 있고, 리턴값은 없는 메서드로 정의

 

ex)

using System;

namespace Test
{
    public class Program
    {

        static void Main(string[] args)
        {
            privateData d1 = new privateData();
            d1.data = 10;
            
            Console.WriteLine("public data : " + d1.data);
            //d1.privatedata  접근 불가 
            d1.setData(20); //setter을 사용하여 private 함수값을 저장
            Console.WriteLine("privateData:" + d1.getData());


        }



    }
    public class privateData
    {

        public int data;
        private int privatedata;


        // 1. Getter 정의 : 매개변수는 없고, 리턴값(int privatedata)만 있는 메서드
        public int getData()
        { // 리턴값이 있으므로 리턴타입 int, 매개변수 없으므로 getData()
            return privatedata;
        }

        // 2. Setter 정의 : 매개변수(입력받을 데이터를 저장할 변수)만 있고, 리턴값은 없는 메서드
        public void setData(int data)
        {
            privatedata = data;
        }

    }

}

<결과>

 

반응형

댓글