상세 컨텐츠

본문 제목

step6 c# 상속 과 OOP

개발생활/Unity Engine

by 한국인맛집 2022. 3. 21. 22:50

본문

반응형

상속 (Inheritance)

상속은 객체지향 프로그래밍에서 부모클래스의 동작(메소드)를 다시 재사용, 확장 하는 개념입니다.

상속의 사용방법은 다음과같습니다.

 

public class Parent{
	private int number;
    
	public void MyFunc(){
    
	}
	public int Foo(){
    
	}
}


public class Child : Parent{
	
	public Foo(){
		
	}
    
	public void Moo(){

	}
}

 

 

파생 클래스(Abstract Class)

 

파생클래스는 반드시 상속받은 자식클래스는 메소드들을 재정의 해주어야합니다.

파생클래스는 파생클래스만으로 사용할수 없습니다.

 

사용은 다음과 같습니다. 

 

public abstract class MyClass{
	protected abstract void Boo();
	public abstract void Foo();
}


public class Child : MyClass{
	
    override void Boo(){
    	// TODO
    }
    
    
    override void Foo(){
    	// TODO
    }
}

 

 

정적 keyword (static)

 

static 키워드는  정적 속성을 부여하는것입니다. static 키워드를 사용할경우 객체를 생성하지 않고 메모리에 접근 할수 있도록 해주는 키워드입니다.

 

클래스, 속성, 필드, 메서드, 구조체 어디든 static 키워드를 추가할수 있습니다.

 

class Program {
	static void Main(string[] args) {
		// 정적 속성이 있는 경우만 불러사용가능.
	}

	static public void Member() {
		Console.WriteLine("Hello");
	}
}


class MyMember{

	public void Call(){
    	// 다른 클래스에서 객체를 생성하지 않고 아래와 같이 접근이 가능함
		Program.Member();
        
        /*
        	static 속성이 아니라면 다음과 같이 접근해야함.
        	Program p = new Program();
            p.Member();  
        */
	}
}

 

이름공간 namespace

 

네임스페이스, 관련 개체 집합을 포함하는 범위를 선언하는 데 사용됩니다 . 네임스페이스를 사용하여 코드 요소를 구성하고 전역적으로 고유한 형식을 만들 수 있습니다.

 

namespace MyName{

   class MyClass{  
        public void Foo(){
			Console.WriteLine("Foo");
		}
   }
}


namespace YourClass{
	class MyClass{
    	public void Foo(){
        	Console.WriteLine("Your FOO");
        }
    }
}

 

같은 이름의 클래스 같은 이름의 메서드가 구현되어있지만

서로다른 네임스페이스를 이용하므로 코드간의 충돌을 막을수 있음.

 

서로 다른 네임스페이스에서 접근 하기위해선 .(dot) 점으로 접근해야한다.

 

MyName.MyClass fo = new MyName.MyClass();
fo.Foo();

 

같은 네임스페이스 (이름공간) 안에선 생략이 가능하다.

 

using 키워드를 사용하면 네임스페이스를 사용하지 않고 직접 사용할수 있다.

using MyName;


MyClass po = MyClass();
po.Foo();

 

 

gitignore file

# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/

# Recordings can get excessive in size
/[Rr]ecordings/

# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*

# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*

# Visual Studio cache directory
.vs/

# Gradle cache directory
.gradle/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta


# Unity3D generated file on crash reports
sysinfo.txt

# Builds
*.apk
*.aab
*.unitypackage
*.app

# Crashlytics generated file
crashlytics-build.properties

# Packed Addressables
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*

# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*

Temp/

 

 

 

 

 

 

 

 

 

Reference

https://docs.microsoft.com/

 

개발자 도구, 기술 설명서 및 코딩 예제

개발자와 기술 전문가용 Microsoft 설명서 및 학습을 위한 홈입니다.

docs.microsoft.com

 

반응형

관련글 더보기