클래스 : 객체의 구조와 행위 정의
객체(Object) : 같은 유형을 갖는 객체들로 분류할 수 있음
클래스 선언 형태
[class-modifier] class ClassName {
//member delarations
}
- 처음에 클래스 수정자(modifier)가 선택적으로 나올 수 있음
- 수정자 : 수정자 다음으로는 지정어 class가 나옴, 일반적으로 첫문자를 대문자로 쓰는 것이 관례
- 클래스의 멤버 : 필드와 메소드, 프로퍼티와 인덱서, 연산자 중복, 이벤트 등
수정자의 특징
접근 수정자, new à 클래스 내에 정의되는 중첩 클래스일 경우 사용
public à 다른 프로그램에서도 사용 가능
internal à 같은 프로그램에서만 사용가능, 클래스 수정자가 생략된 경우
static à 정적클래스라 부르며 모든멤버가 정적멤버가 됨, 클래스 단위로 존대
abstract à 일반 클래스와 상속 관계를 맺는 클래스, 직접 객체생성 불가
sealed à 더 이상 상속하지 않는 클래스 표현시 사용, 프로그래밍 오류방지
필드 : 객체의 구조를 기술하는 자료부분, 변수선언으로 구성됨
필드 선언 형태
[field-modifier] DataType
fieldNames;
필드 수정자의 종류
- 접근수정자(public, protected, internal, private) //다른 클래스의 접근허용 제어
- new //상속 계층에서 상위 클래스에 선언된 멤버를 하위 클래스에 새롭게 재정의하기 위해 사용
- static //정적필드, 클래스 단위로 존재
- readonly
- colatile
- 지정어 개수로 모두 8개
메소드 : 객체의 상태를 건색하고 변경하는 작업, 특정 행동 처리 코드를 포함하고 있는 함수의 형태
- 메소드 중복 : 메소드의 이름은 같지만 매개변수의 개수와 형이 다른 경우
- 생성자 : 클래스 이름과 동일한 이름을 갖는 특수한 메소드로서 객체 생성시 자동호출
- 소멸자 : 클래스의 객체가 소멸될 때 필요 행위 기술 메소드, 생성자와 이름이 같으나 앞에 ~(tilde)가 붙음
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FectionApp //클래스 정의 및 구현
{
class Fraction
{
int numerator; //분자필드
int denominator; //분모필드
public Fraction(int num, int denom)
{
//생성자
numerator = num;
denominator = denom;
}
public void PrintFraction()
{
//출력메소드
Console.WriteLine(numerator + "/" + denominator);
}
}
class FractionApp
{
public static void Main()
{
Fraction f = new Fraction(1, 2);
f.PrintFraction();
}
}
}