using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ex12OOP3
{
class Program
{
static void Main(string[] args)
{
Person p1 = new Person("", "", "");
Person p2 = new Person("", "", "");
Person p3 = new Person("", "", "");
Console.WriteLine(p1.GetPersonInfo());
Console.WriteLine(p2.GetPersonInfo());
Console.WriteLine(p3.GetPersonInfo());
Console.WriteLine(Person.NextNumber); // 클래스로 접근
}
}
}
********************************************* 코드파일 추가1 ************************************************
using System;
namespace Ex12OOP3
{
class Person
{
private static int nextNumber = 1; //필드초기화 (생성자 메서드 호출 직전에 처리)
// static 해주면 각 객체간 공유를 하게 해준다
public static int NextNumber
{
get { return nextNumber; }
set
{
// number = 1; 오류 : static 영역에서는 객체형 멤버를 접근 불가
nextNumber = value;
}
}
static Person() { nextNumber = 1; }
private int number;
public int Number // 리펫터링 -> 필드캡슐화
{
get { return number; }
set { number = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string phone;
public string Phone
{
get { return phone; }
set { phone = value; }
}
private string email;
public string Email
{
get { return email; }
set { email = value; }
}
// public Person() { } 생성자를 안만들어도 기본으로 이건 생략이 되어 있다
public Person() //main 생성자
{
number = nextNumber;
nextNumber++;
}
public Person(string name, string phone, string email)
:this()
{
this.name = name;
this.phone = phone;
this.email = email;
}
//기능(Method)
public string GetPersonInfo()
{ //Console.WriteLine 와 같다
return string.Format(
"[{0}][{1}][{2}][{3}]", number, name, phone, email);
}
}
}
********************************************* 코드파일 추가2************************************************
using System;
namespace Ex12OOP3
{
class Constans
{
public int dataa = 10;
public readonly int datab = 10; // readonly는 필드 초기화 선택
public const int datac = 10; // const는 반드시 필드 초기화 필요
public Constans()
{
dataa = 20;
datab = 20; // readonly는 생성자에서 값 변경 O
//datac = 20; // const는 생성자에서 값 변경 X
}
public void Method()
{
dataa = 30;
//datab = 30; // 값 변경 X
//datac = 30; // 값 변경 X
}
//필드 , 메소드, 프로퍼티, 콘스트럭터, 스타틱, 리드온니, 콘스트
}
}
'프로그램 > C# - Study' 카테고리의 다른 글
7D - 다형성, 상속 (0) | 2010.09.14 |
---|---|
7D - 상속, protected (0) | 2010.09.14 |
7D - 오버로딩 (0) | 2010.09.14 |
7D - private, pubic 접근 - 추가 (0) | 2010.09.14 |
6D - private, pubic 접근 (0) | 2010.09.13 |