객체지향(OOP) : 은닉성, 상속성, 다형성
Mage, Archer, Knight 클래스의 부모인 Player 클래스를 생성
부모(기반) 클래스 : Player
자식(파생) 클래스 : Mage, Archer, Knight
공통된 속성(필드), 함수를 부모에 정의
class Player // 부모(기반) 클래스
{
public int id;
public int hp;
public int attack;
public Player()
{
Console.WriteLine("Player 생성자 호출!");
}
public Player(int hp)
{
this.hp = hp;
Console.WriteLine("Player hp 생성자 호출!");
}
public void Move()
{
Console.WriteLine("Knight Move");
}
public void Attack()
{
Console.WriteLine("Knight Attack");
}
}
자식 클래스에서 부모 상속
class Mage : Player
{
}
class Archer : Player
{
}
class Knight : Player // 자식(파생) 클래스
{
public Knight() // 기본적으로 명시하지 않아도 부모 생성자 호출됨
{
Console.WriteLine("Knight 생성자 호출!");
}
}
메인 코드에서 실행
class Program()
{
static void Main(string[] args)
{
Knight knight = new Knight();
}
}
컴파일 결과
Player 생성자 호출!
Knight 생성자 호출!
기본적으로 자식에서 생성자 호출하면 부모 생성자 호출됨
base(매개변수 값)을 통한 호출
class Knight : Player // 자식(파생) 클래스
{
public Knight() : base(100) // 어느 부모 생성자를 호출할지 지정함
{
// this.c = 10; // 나의 변수 c
// base.hp = 100; // 부모의 변수 hp
Console.WriteLine("Knight 생성자 호출!");
}
}
class Program()
{
static void Main(string[] args)
{
Knight knight = new Knight();
}
}
컴파일 결과
Player hp 생성자 호출!
Knight 생성자 호출!
: base(매개변수 값)으로 지정하면 해당 부모 생성자 호출됨
부모에서 정의된 함수도 자식에서 사용가능함
class Program()
{
static void Main(string[] args)
{
Knight knight = new Knight();
knight.Move(); // 부모 함수 사용 가능
}
}
전체코드
using Rookiss_CSharp;
using System;
using System.Diagnostics.Metrics;
using System.Numerics;
namespace Rookiss_CSharp
{
// 객체지향(OOP): 은닉성, 상속성, 다형성
class Player // 부모(기반) 클래스
{
public int hp;
public int attack;
public Player()
{
Console.WriteLine("Player 생성자 호출!");
}
public Player(int hp)
{
this.hp = hp;
Console.WriteLine("Player hp 생성자 호출!");
}
public void Move()
{
Console.WriteLine("Knight Move");
}
public void Attack()
{
Console.WriteLine("Knight Attack");
}
}
class Mage : Player
{
}
class Archer : Player
{
}
class Knight : Player // 자식(파생) 클래스
{
// int c;
public Knight() // 기본적으로 명시하지 않아도 부모 생성자 호출됨
{
Console.WriteLine("Knight 생성자 호출!");
}
// 결과
// Player 생성자 호출
// Knight 생성자 호출
/*
public Knight() : base(100) // 어느 부모 생성자를 호출할지 지정함
{
// this.c = 10; // 나의 변수 c
// base.hp = 100; // 부모의 변수 hp
Console.WriteLine("Knight 생성자 호출!");
}
*/
// 결과
// Player hp 생성자 호출
// Knight 생성자 호출
}
class Program()
{
static void Main(string[] args)
{
Knight knight = new Knight();
knight.Move();
}
}
}
출처
상속성 | [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
상속성
www.inflearn.com
40강 상속성