티스토리 뷰

💥 생성자(Constructor)

 - 모든 변수는 선언이 되면 값을 초기화해야 한다.

 - 객체도 본질적으로 변수이므로 선언되면 초기화해야 한다.

 - 객체 생성 시 초기화 전용 메소드를 제공한다.  => 생성자

 - 객체 생성 시 자동으로 호출되는 메소드이다.

💥 생성자 실습해보기

using System;

class Dog {
    private int eyes, nose, mouse, ears;
    public void bark(){Console.WriteLine("멍멍");}
    public Dog(){
        eyes = 0;
        nose = 0;
        mouse = 0;
        ears = 0;
    }
}

class HelloWorld {
  static void Main() {
      Dog a = new Dog();
      a.bark();
  }
}

객체 생성 시 초기화 전용 메소드를 제공하는데, 그것이 바로 생성자 이다.

생성자는 클래스의 이름과 동일해야하고, 외부로 공개가 되야하기 때문에 접근 지정자 public을 붙여주어야 한다.

 

만약 생성자가 없었다면 특정 class를 만들 때 마다, 초기화 해주는 함수를 각각 만들어야 하는데

그렇게 되면 class 이름도 중구난방으로 헷갈릴 거고, 다른 사람이 코드를 보았을 때 헷갈릴 수도 있다.

하지만 생성자를 이용한다면, 특정 class와 이름이 동일하기 때문에 관리도 편하고 한 눈에 알아보기도 쉬워진다.

그래서 생성자를 이용해서 초기화 하는 걸 추천한다.

💥 상속성(Inheritance)

 - 일상에서 사용하는 '상속' 이란 단어와 다른 부분이 없다.

 - 이미 완성된 클래스를 다른 클래스에 상속할 수 없다.

 - 부모 클래스로부터 상속을 받을 때, 클래스 이름 끝에 콜론(:)을 붙인다.

 - 자바(Java)의 경우, extends를 붙인 후 부모 클래스의 이름을 적는다.

💥 상속성 실습 해보기

using System;

class Dog {
    protected int eyes, nose, mouse, ears;
    public void bark(){Console.WriteLine("멍멍");}
    public Dog(){
        eyes = 0;
        nose = 0;
        mouse = 0;
        ears = 0;
    }
}

class Pudle : Dog{
    public Pudle(){
        base.eyes = 2;
        Console.WriteLine("푸들의 눈은 {0}개", eyes);
    }
    
}

class HelloWorld {
  static void Main() {
      Dog a = new Dog();
      a.bark();
      Pudle pd = new Pudle();
  }
}

우선 class Dog에서 private을 protected로 바꾸었다.

아무리 상속이 되었을 지라도, private은 접근할 수 없기 때문이다.

그래서 외부에선 private처럼 접근이 불가능하지만 자식 클래스에선 접근이 가능한 protected로 바꿔주어야 한다.

'웹 개발 공부하기' 카테고리의 다른 글

[01.09] 인터페이스  (1) 2025.01.12
[01.09] 오버로딩과 오버라이딩  (0) 2025.01.12
[01.09] 클래스(Class)  (0) 2025.01.12
[01.09] 객체 지향 프로그래밍 방식  (0) 2025.01.12
[01.09] 동적 메모리 할당  (0) 2025.01.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함