추상클래스와 인터페이스의 차이점
추상클래스는 추상 메소드를 선택적으로 가지는 데 비해 인터페이스는 전부 추상 메소드만을 갖는다. 그래서 인터페이스를 상속한 클래스는 모든 메소드를 구현해야한다.
클래스는 다중상속이 안 되지만, 인터페이스는 다중상속이 가능하다.
namespace ConsoleApp4
{
public abstract class SmartPhone {
public abstract void Camera();
public abstract void CellPhone();
public abstract void NetWork();
}
public class Acompany : SmartPhone
{
override public void Camera()
{
Console.WriteLine("A 회사 카메라기능");
}
override public void CellPhone()
{
Console.WriteLine("A 회사 전화기능");
}
override public void NetWork()
{
Console.WriteLine("A 회사 네트워크 기능");
}
}
public class Bcompany : SmartPhone
{
override public void Camera()
{
Console.WriteLine("B 회사 카메라기능");
}
override public void CellPhone()
{
Console.WriteLine("B 회사 전화기능");
}
override public void NetWork()
{
Console.WriteLine("B 회사 네트워크 기능");
}
}
class Program
{
static void Main(string[] args)
{
SmartPhone sp = new Acompany();
sp.Camera();
sp.CellPhone();
sp.NetWork();
sp = new Bcompany();
sp.Camera();
sp.CellPhone();
sp.NetWork();
}
}
}
namespace ConsoleApp4
{
public interface IUnit{
void Attack();
void Move();
}
public class Zergling : IUnit {
public void Attack() {
Console.WriteLine("저글링 : 공격한다.");
}
public void Move()
{
Console.WriteLine("저글링 : 이동한다.");
}
}
public class Dragoon : IUnit
{
public void Attack()
{
Console.WriteLine("드라군 : 공격한다.");
}
public void Move()
{
Console.WriteLine("드라군 : 이동한다.");
}
}
class Program
{
static void Main(string[] args)
{
Zergling zerg = new Zergling();
zerg.Attack();
zerg.Move();
Dragoon dr = new Dragoon();
dr.Attack();
dr.Move();
}
}
}
namespace ConsoleApp4
{
public interface ICamera{
void Picture();
void Video();
}
public interface ICallPhone
{
void Call();
}
public interface INetwork
{
void Wifi();
}
public class SmartPhone : ICamera, ICallPhone, INetwork {
public void Picture() {
Console.WriteLine("사진을 찍는다");
}
public void Video()
{
Console.WriteLine("동영상을 찍는다");
}
public void Call()
{
Console.WriteLine("전화를 건다");
}
public void Wifi()
{
Console.WriteLine("와이파이 연결한다");
}
}
class Program
{
static void Main(string[] args)
{
SmartPhone sp = new SmartPhone();
sp.Picture();
sp.Call();
sp.Video();
sp.Wifi();
}
}
}