구조체, 추상 클래스, 인터페이스, 1차원 배열
구조체
- 데이터와 관련 기능을 캡슐화 있는 값형식
->값 형식이므로 스택메모리에 저장
* 구조체 형식은 다른 클래스 또는 구조체 형식에서 상속할 수 없다. -부모가 될 수 없다.
*구조체 형식의 생성자가 형식의 모든 instance 필드를 초기화해야한다.
*매개변수가 없는 생성자를 선언할 수 없다.
-적은 양의 데이터를 다룰 때 주로 사용된다.
-일회용 사용(ex. 서버에 데이터 전송)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Starcraft
{
internal struct Vector2//구조체: 값형식
{
public int x;
public int y;
//생성자
public Vector2(int x, int y) {
this.x = x;
this.y = y;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace Starcraft
{
internal class App
{
//생성자
public App()
{
Vector2 v = new Vector2(2, 3); //값: 스택메모리에 저장
Console.WriteLine("{0},{1}",v.x, v.y);
Marine marine = new Marine();
}
}
}
추상 클래스
-abstract 키워드를 사용해 불완전해 파생 클래스에서 구현해야 하는 클래스 멤버를 만들 수 있다.
-여러 파생 클래스에서 공유할 수 있는 기본 클래스의 공통적 정의를 제공하는 것.
*추상 클래스는 인스턴스화할 수 없다.
인터페이스
-계약을 정의. 멤버에 대한 기본 구현을 정의.
-관련 기능 그룹에 대한 정의
-상속 시 어떤 파생 클래스에게는 쓸 모 없는 기능이 포함되는 것을 방지해준다.
-다중 상속이 가능하다.
속성
-공용 데이터 멤버처럼 사용할 수 있지만 접근자라는 특수 메서드이다.
1차원 배열
int[] array = new int[5];
다음과 같이 작성한다.
int는 0으로 초기화되지만, string 은 참조형식이므로 null이 들어간다.
string[] stringArray = new string[6];
배열
- 동일한 타입의 데이터들을 그룹화하고 관리할 때 사용한다.
//0번 인덱스부터 n-1까지
-배열은 고정적이다 -> 타입의 기본값으로 채워진다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace Starcraft
{
internal class App
{
//생성자
public App()
{
//정수형 배열의 초기화
int[] arr = new int[3];//정수형 배열 인스턴스를 생성
Console.WriteLine(arr);
int[] arr2 = new int[] { 1, 2, 3, 4, 5 };
//문자열 배열의 초기화
string[] weaponNames = new string[]
{
"Axe", "Sword", "Dagger", "Bow"
};
//선언과 동시에 초기화 시
int[] arr3 = { 1, 2, 3};
Marine[] marines = new Marine[3];
Console.WriteLine(marines);
Console.WriteLine("배열의 길이:{0}",marines.Length);
for (int i = 0; i < 3; i++)
{
Console.WriteLine(marines[i]);//index에 접근 - >null이다.
}
for (int i = 0; i < 3; i++)
{
marines[i] = new Marine();
Console.WriteLine(marines[i]);
}
//foreach는 읽기전용
//marines 개체에 대한 요소들을 수정x
//수정하려면 for문 사용
foreach(Marine marine in marines)
{
Console.WriteLine(marine);
}
}
}
}
'C# 기초' 카테고리의 다른 글
배열 연습 (0) | 2023.07.25 |
---|---|
배열 예제 (0) | 2023.07.24 |
상속, virtual, override, overload, 연결(chaining), casting (0) | 2023.07.24 |
void, 메서드 매개변수, 생성자 연습 (0) | 2023.07.21 |
switch문, 생성자 연습+예제 (0) | 2023.07.21 |