반응형
인터페이스 정의
*추상 메서드와 같이 메서드 선언부만 포함하는 형식
*클래스와는 구분됨. 다중 상속 가능
*인스턴스화 될 수 없음
*인터페이스를 상속한 클래스는 반드시 인터페이스에서 선언된 메서드를 구현해야함
*속성도 포함될 수 있음
*사용 목적 : 표준화 규격화 계약 등등의 의미
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace exam10
{
abstract class Figure :IFigurable// :추상 클래스
{
abstract public Double Area();
//width ,height 사각형
//반지름 Phi R^2
// 추상
public override string ToString()
{
return base.ToString();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace exam10
{
interface IFigurable //메서드 보따리 느낌 : 규격 만 정해 준다 .
{
Double Area();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace exam10
{
class Program
{
static void Main(string[] args)
{
Rectangle rectangle = new Rectangle(10,20);
Circle circle = new Circle(10);
Console.WriteLine($"사각형의 면적은 : {rectangle.Area()}");
Console.WriteLine($"원의 면적은 : {circle.Area()}");
rectangle.Space();
//Figure figure1 = rectangle;
//Figure figure2 = circle;
//figure1.Area();
//IFigurable figurable = rectangle;
//figurable.Area();
Console.WriteLine("===========================");
PrintRect(rectangle);
PrintCir(circle);
//느슨한 연결 // 비슷한 메서드를 중복해서 만들 필요없다.
PrintFigure(rectangle);
PrintFigure(circle);
}
//강력한 연결
static void PrintRect(Rectangle rectangle1)
{
Console.WriteLine($"사각형의 면적은 : {rectangle1.Area()}");
}
static void PrintCir(Circle circle1)
{
Console.WriteLine($"원의 면적은 : {circle1.Area()}");
}
//느슨한 연결 // 루즐리 커플링
static void PrintFigure(IFigurable figurable)
{
figurable.Area();
}
}
}
반응형
'C#' 카테고리의 다른 글
c# 네트워크 공부 (IPAddress 클래스 / Dns클래스) (0) | 2021.01.14 |
---|---|
라디오 버튼과 그룹 박스 사용법 (0) | 2021.01.01 |
시퀀스 (0) | 2020.12.16 |
LINQ_to_Objects의_기초 (0) | 2020.12.15 |
List 클래스와 람다식의 조합 (0) | 2020.12.14 |
Abstract 추상 클래스 /메서드 (0) | 2020.11.16 |