티스토리 뷰
💥 생성자(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 |