클래스
using System;
namespace c__practice {
class Cat {
public string Name = null;
public Cat(string name) {
Name = name;
Console.WriteLine("고양이 이름은 " + Name + "입니다.");
}
}
class MainClass {
public static void Main(string[] args) {
Cat coco = new Cat("코코");
Cat moly = new Cat("몰리");
}
}
}
- Cat 클래스에 고양이 이름 정하기
- 메인 클래스에서 인스턴스 변수를 만든 다음 인스턴스_변수명.Name에 고양이 이름 저장
- 생성자는 인스턴스를 만들 때 자동으로 호출된다는 특징
- 생성자에 매개변수로 string 자료형의 name 변수에 값 입력
- Name과 name은 다른 변수
- name변수로 입력받은 값을 Name에 저장하고 그 값을 출력하는 내용 생성자
- 메인 클래스 : 매개변수의 입력값에 따라 생성자가 호출되며 출력
함수
- 어떤 작업이나 계산을 수행하는 작은 프로그램의 한 부분
- 특정 작업을 처리하기 위해 미리 만들어진 코드 덩어리
- 코드를 깔끔하고 효율적으로 관리
매개변수
- 함수나 메소드에 전달되는 값
- 함수나 메소드는 어떤 일을 하도록 만들어지는 도구인데 그 도구가 제대로 작동하려면 어떤 정보를 제공해야할 때가 있어야 된다.
- 제공되는 정보
인스턴스
- 클래스라는 설계도를 바탕으로 실제로 만들어진 하나의 객체
- 클래스 = 설계도, 인스턴스 = 설계도를 바탕으로 만들어진 실제 물건
- 자동차 설계도 / 자동차
ex)
class Car {
public string color;
public string model;
public void Drive() {
Console.WriteLine("이 " + color + " " + model + "가(이) 달립니다.");
}
}
- 자동차 설계도 : Car라는 클래스
- 인스턴스 : 이 설계도를 바탕으로 실제로 만들어진 자동차
- 인스턴스 생성
Car myCar = new Car();
myCar.color = "빨강";
myCar.model = "스포츠카";
myCar.Drive();
요약
- 매개 변수 : 함수나 메소드가 작업을 하기 위해 필요로 하는 정보
즉, 함수에게 전달하는 값
- 인스턴스 : 클래스라는 설계도를 바탕으로 실제로 만들어진 실제 객체
즉, 클래스도 만들 하나의 물건
오버로딩
- 객체지향 프로그래밍에서 클래스가 가지는 특징의 하나
- 클래스 내부에 이름이 같은 메서드를 여러 개 선언하여 필요에 맞게 사용
- 햄버거를 만들 때 햄버거라는 큰 틀은 그대로 두고 어떤 식재료를 넣는지에 따라서 다른 햄버거가 되는 원리
using System;
class Cat {
public string Name = null;
public int Weight = 0;
public Cat(string name) {
Name = name;
Console.WriteLine("고양이 이름은 " + Name + "입니다.");
}
public Cat(string name, int weight) {
Name = name;
Weight = weight;
Console.WriteLine("고양이 이름은 " + Name + "이며, 몸무게는 " + Weight + "kg 입니다.");
}
}
class Mainclass {
public static void Main(string[] args) {
Cat coco = new Cat("코코");
Cat moly = new Cat("몰리", 3);
}
}
- 이름은 같지만 매개변수 개수가 다른 생성자 2개
- 하나는 고양이 이름, 다른 하나는 이름과 몸무게 입력받기
- 메서 오버로딩으로 구현하려면 이름은 같지만 매개변수의 개수나 자료형이 달라야한다.
- 예제에서는 매개 변수의 개수를 다르게 적용해 오버로딩 구현