본문 바로가기

C#

인터페이스 개념 및 연습 C#

반응형

인터페이스 정의
*추상 메서드와 같이 메서드 선언부만 포함하는 형식
*클래스와는 구분됨. 다중 상속 가능 
*인스턴스화 될 수 없음 
*인터페이스를 상속한 클래스는 반드시 인터페이스에서 선언된 메서드를 구현해야함
*속성도 포함될 수 있음
*사용 목적 : 표준화 규격화 계약 등등의 의미

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