(화)2024.09.24 자 끄적끄적...
그냥 제목 한국어로 쓰다가 영어도 넣어주고 싶어서 그냥 넣어봤음... 가독성 너무 떨어져서 뺌
공부하면서 그냥 내맘대로 내 보기 편한대로 쓴건데 틀린 거 있으면 댓글 감사
get
, set
이용해서 접근할 수 없는 대상에 간접적으로 접근하여 값을 반환하거나 값을 넣어줄 수 있다.
[접근 제한자] [데이터 타입] 프로퍼티명(약간 함수 느낌)
{
get{}
set{}
}
string name;
public string Name
{
get{
return name;
}
set{
name = value;
}
}
public int Age{get; set;}
class Person {
//디폴트 생성자
public Person()
{
}
//오버로딩
public Person(string name)
{
}
//소멸자 뭐 거의 쓰진 않는다
~Person()
{
}
}
class Person
{
private string name;
private int age;
public void PrintInfo()
{
Console.WriteLine($"Name: {name}, Age: {age}");
}
}
Person person1 = new Person();
virtual
키워드를 사용하여 선언, 자식 클래스에서 필요에 따라 재정의virtual
키워드를 통해 메서드를 생성하면 자식에서 재정의를 했다고 알려주는 것.(하지 않았을 수도 있지만 했으니까 가서 확인해! 이런 느낌)override
키워드를 통해 재정의 해야함.자식의 형태가 아닌 부모의 형태로 리스트를 관리하고자 할 때,
어떤 부분에 접근하면 가장 가까운 부모의 형태에 들어있는 메서드들에 접근하게 된다.
이 때, 자식에서 그 메서드를 변경해줬을 지라도 부모가 가까우니 자식까지 안 가게 되는데,
[자식에서 재정의할 수도 있으니 보고와라] 가 가상메서드인 것이다.
그래서, 부모의 메서드에virtual
을 자식의 메서드에override
를 넣어 가상메서드를 관리한다.
그림 넣을까 말까 고민중
abstract
키워드 사용하여 만듬. 자식에서 override
로 구현다양한 자료형에 대응할 수 있는 기능.
<T>
키워드를 사용해서 제네릭 선언.
선언 시점이 아닌 사용시점에 자료형이 결정됨. 사용시점에 <T>
대신 꺾쇠안에 구체적인 자료형 대입.
코드의 재사용성을 높임...? 뭔 개소리야 이게...? 그냥 다양한 자료형에 대응할 수 있다는 거 같음. 그게 재사용성 높이긴 하네 ㅇㅇ
제네릭을 이용한 stack구현 코드 예시
// 제너릭 클래스 선언 예시
class Stack<T>
{
private T[] elements;
private int top;
public Stack()
{
elements = new T[100];
top = 0;
}
public void Push(T item)
{
elements[top++] = item;
}
public T Pop()
{
return elements[--top];
}
}
// 제너릭 클래스 사용 예시
Stack<int> intStack = new Stack<int>();
intStack.Push(1);
intStack.Push(2);
intStack.Push(3);
Console.WriteLine(intStack.Pop()); // 출력 결과: 3
class Pair<T1, T2>
{
public T1 First { get; set; }
public T2 Second { get; set; }
public Pair(T1 first, T2 second)
{
First = first;
Second = second;
}
public void Display()
{
Console.WriteLine($"First: {First}, Second: {Second}");
}
}
Pair<int, string> pair1 = new Pair<int, string>(1, "One");
pair1.Display();
Pair<double, bool> pair2 = new Pair<double, bool>(3.14, true);
pair2.Display();
out
키워드를 사용한 변수는 "무. 조. 건." 값을 전달받아 변수가 바뀌어야 한다. (변수가 값을 전달받지 않으면 에러)ref
키워드는 값의 변경가능성이 있을 때 사용한다. out
과 다른 점은 변경해도 되고 안해도 되고 차이인듯ref
사용예시를 들어보면 if문을 사용해 어떤 조건일 때만 ref
가 쓰인 변수가 바뀐다 요정도?