붕어빵 틀 = 클래스
붕어빵 = 객체
class( )
{
//메소드
//변수
}
객체는 두 가지로 나뉜다. 상태 정보와 행위정보
상태정보 - 변수
행위정보 - 메소드
소스를 보면 class안에 Main이 있는데, Main도 메서드이다.
Class 안에 Car클래스를 만들어보자 Car 클래스는 Program 클래스 안에 선언되는데
이걸 이너 클래스라고 한다.
유효 범위
프로그래밍에서 특정 이름(변수명 등)이 영향을 미치는 영역.
중괄호로 영역 표시
static void Main(string[] args)
{
int iNum = 100;
}
iNum은 Main문의 중괄호 안에서만 사용할 수 있다. 그래서
Class Car
{
int iNum;
iNum = 100;
}
static void Main(string[] args)
{
int iNum = 100;
}
둘이 달라서 사용 가능
class에 선언된 변수는 클래스 변수, 함수 안에 선언된 변수는 메소드 변수.
생성자
클래스_이름과 같게(받을 인자)
{
//실행코드
}
생성자는 객체를 생성시켜주는 역할을 하며 주로 객체의 변숫값을 초기화시켜줄 때 이용한다.
클래스와 이름이 같고 반환 타입을 적어주지 않는다.
만약 기본 생성자를 생략했을 경우 컴파일러에서 컴파일할 때 자동으로 만들어 준다.
생성자는 여러 개 생성할 수도 있다. 여러 인자를 받는 생성자도 만들 수 있는데
이것을 생성자 오버로딩 이라고 한다.
예제) Car 클래스 만들고 가속, 감속시키기. 생성자 오버로딩도 써보기
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200528_003
{
class Car // inner class 이너 클래스
{
// 상태정보
public int iSpeed;// 속도 // class 변수 // Main문에서 썻지만 유효범위가 다르기 때문에 사용 가능
//일반 메소드의 경우
//반환값 메소드이름(매개변수)
//{
//
//}
//생성자
//클래스이름(매개변수)
//{
//
//}
public Car(int _iSpeed)
{
Console.WriteLine("Car(int) 클래스생성됨");
iSpeed = _iSpeed;
}
public Car() // 디폴트 생성자
{
iSpeed = 0;
Console.WriteLine("Car() 클래스생성됨");
}
// 행위정보
public void Acc()
{
iSpeed = iSpeed + 10; // 클래스 내에서는 사용 가능
}// 가속한다
public void DeAcc()
{
iSpeed = iSpeed - 10;
}// 감속한다
public void Status()
{
Console.WriteLine("현재 속도는 {0}km 입니다.", iSpeed);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("1==================");
Car myCar = new Car(3); // new 를 쓸때마다 생성자 호출됨. 생성자를 호출해서 객체를 생성한다.
myCar.Status();
Console.WriteLine("2==================");
Car myCar1 = new Car(); // 객체가 생성돠었다가 사라짐.
myCar1.Status();
Console.WriteLine("3==================");
}
}
}
'컴퓨터 > C#' 카테고리의 다른 글
[C#] 종료자, 정적멤버와 인스턴스멤버, 정적 메서드, 접근제한자, 싱글톤 (0) | 2020.05.29 |
---|---|
[C#] 메모장에 소스적어 컴파일 하기 (0) | 2020.05.29 |
[C#] 구조체와 배열 (0) | 2020.05.27 |
[C#] 닷넷 (0) | 2020.05.27 |
[C#] 소수 검사하기 (0) | 2020.05.26 |