c# ☃️

[C#] Setter/Getter - 자동 구현 속성

소로리 산적 2024. 5. 13. 01:44

구성


Car.cs

using System;
namespace Class1
{
	public class Car
	{
		// private 필드는 데이터 저장할때 보통 사용됨 
		private string _name;
		private int  _hp;
		private string _color;


		//auto 구현 속성 
		public int MaxSpeed{ get; set; }

		// the public property
		// 데이터 필드를 공개하는 대신 속성을 이용해 통제된 엑세스 제공 
		public string Name {
			get { return _name; } // get 액세스 
			set {
				if( value == "" ) {
					_name = "Default";
				}
				else
				{
                    _name = value;
                }
				
			} // set 액세스 
		}
		

		//Default 생성자 
		public Car()
		{
			_name = "Car";
			_hp = 0;
			_color = "red";
			Drive();
		}

		//Partial Specification 생성자 
		public Car(string name, int hp = 0)
		{
			_name = name;
			Console.WriteLine(name + " Car 클래스 생성 !");
			_hp = 0;
			_color = "red";
			Drive();
		}

		// Full specification Contructor
		public Car(string name, int hp, string color)
		{
			_name = name;
			Console.WriteLine(name + " Car 클래스 생성 !");
			_hp = hp;
			_color = color;
			Drive();
		}

		//member methods
		//private가 되면 제한적 
		private void Drive()
		{
			Console.WriteLine(_name + " 운전중 =333");
		}

		public void Stop()
		{
			Console.WriteLine(_name + " 멈춤 'ㅅ'");
		}

		public void Details()
		{
			Console.WriteLine(_color +"색깔 차 : " + _name + ", 마력 : " + _hp);
		}
	}
}


Program.cs

namespace Class1;
class Program
{
    static void Main(string[] args)
    {
        // 새 키워드는 새 인스턴스를 생성하는데 사용
        // new 를 쓰면 새 객체를 위해 새 메모리 힙에 할당

        //default constructor 실행 
        Car mycar = new Car();
        mycar.MaxSpeed = 100;

        Console.WriteLine("Max speed is " + mycar.MaxSpeed);

        Console.ReadLine();
    }
}



실행결과