--- id: csharp-classes-multi title: "C# Multiple Classes and Objects" category: "Programming_Language" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["multiple objects same class C#", "separate files classes C#", "C# 다중 클래스"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.82 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["csharp", "programming-language", "w3schools", "oop", "classes"] raw_sources: ["https://www.w3schools.com/cs/cs_classes_multi.php"] applied_in: [] github_commit: "" --- # [[CSharp Multiple Classes and Objects]] ## 🎯 한 줄 통찰 (One-line insight) This short chapter is largely a distilled repeat of patterns already shown in Class Members (multiple objects of one class, splitting fields/methods into one class and `Main()` into another) — its only genuinely new emphasis is calling out the `public` keyword by its formal name, "access modifier," and stating outright that without it, a field defined in one class (`Car`) would NOT be reachable from another class (`Program`), making the two-file `prog2.cs`/`prog.cs` split only work BECAUSE of that modifier. [S1] ## 🧠 핵심 개념 (Core concepts) - **Multiple objects of one class** — `Car myObj1 = new Car(); Car myObj2 = new Car();` — each is an independent instance. [S1] - **Splitting classes across files** — one class (fields/methods) in one file (`prog2.cs`), another class (with `Main()`) in a separate file (`prog.cs`) — recommended for organization. [S1] - **`public` = access modifier** — explicitly named as such here; it's what makes a field defined in `Car` reachable from the unrelated `Program` class. Without `public`, cross-class access would fail. [S1] ## 📖 세부 내용 (Details) - Two objects, same class: `class Car { string color = "red"; static void Main(string[] args) { Car myObj1 = new Car(); Car myObj2 = new Car(); Console.WriteLine(myObj1.color); Console.WriteLine(myObj2.color); } }`. [S1] - Cross-file class + access: `prog2.cs`: `class Car { public string color = "red"; }`; `prog.cs`: `class Program { static void Main(string[] args) { Car myObj = new Car(); Console.WriteLine(myObj.color); } }`. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) - **public이 "접근 제한자(access modifier)"라는 공식 용어로 명명됨**: Class Members 챕터에서는 public을 별도 이름 없이 사용했지만, 이번 챕터는 이를 명시적으로 "access modifier"라고 부르며 이것이 없으면 다른 클래스에서 필드에 접근할 수 없다는 점을 재확인함. [S1] ## 🛠️ 적용 사례 (Applied in summary) 동일한 Car 클래스로 두 개의 독립된 객체를 만드는 예제와, Car와 Program을 서로 다른 파일로 분리하되 public으로 필드를 노출하는 예제가 원문에서 직접 실전 활용 사례로 제시됨. [S1] ## 💻 코드 패턴 (Code patterns) Cross-class field access requires `public` (the access modifier) (C#): ```csharp // prog2.cs class Car { public string color = "red"; // public required for cross-class access } // prog.cs class Program { static void Main(string[] args) { Car myObj = new Car(); Console.WriteLine(myObj.color); } } ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.82 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[C# Tutorial]] - **관련 개념:** [[CSharp Class Members]], [[CSharp Constructors]], [[CSharp Access Modifiers]] - **참조 맥락:** OOP Basics 섹션의 마지막 챕터 — Constructors 섹션으로 이어짐. ## 📚 출처 (Sources) - [S1] W3Schools — C# Multiple Classes and Objects — https://www.w3schools.com/cs/cs_classes_multi.php ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "C# Multiple Classes and Objects" page (Astra wiki-curation, P-Reinforce v3.1 format).