23.04.07 Day 49

오윤범·2023년 4월 7일
0
post-custom-banner

C#

상속(inheritance)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs17_inheritance
{
    //부모클래스
    class parent
    {
        public string name;
        public parent(string name )
        {
            this.name = name;
            Console.WriteLine("{0} from 부모생성자",name);
        }
        public void parentmethod()
        {
            Console.WriteLine("{0} from 부모메서드", name);
        }
    }
    //자식클래스
    class child:parent
    {
        public child(string name):base(name)//부모생성자 먼저 실행한 뒤 자식 생성자 실행
        {
            Console.WriteLine("{0} from 자식생성자", name);
        }
        public void childmethod()
        {
            Console.WriteLine("{0} from 자식메서드", name);
        }
    }

    // 클래스간 형변환
    class mammal
    {
        public void nurse()
        {
            Console.WriteLine("포유류 기르다");
        }
    }
    class dogs:mammal
    {
        public void bark()
        {
            Console.WriteLine("왈왈");
        }
    }
    class cats:mammal
    {
        public void meow()
        {
            Console.WriteLine("야옹");
        }
    }
    class elephant:mammal
    {
        public void poo()
        {
            Console.WriteLine("뿌우");
        }
    }
    class zookeeper
    {
        public void wash(mammal mam) 
        {
            if(mam is elephant)
            {
                var animal = mam as elephant;
                Console.WriteLine("코끼리 wash");
                animal.poo();
            }
            else if(mam is dogs)
            {
                var animal = mam as dogs;
                Console.WriteLine("강아지 wash");
                animal.bark();
            }
            else if (mam is cats)
            {
                var animal = mam as cats;
                Console.WriteLine("고양이 wash");
                animal.meow();
            }
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            #region<기본상속>
            parent p = new parent("Parent");
            p.parentmethod();

            child c = new child("Child");
            //c.parentmethod();
            c.childmethod();
            #endregion

            #region<클래스간 형식변환>
            mammal mam = new dogs();//자식클래스가 부모클래스로 변환 가능
            mam.nurse();
            //mam.bark(); // 불가능
            if(mam is dogs)
            {
                dogs middog = mam as dogs; // 클래스 형변환
                middog.bark(); // 클래스 형변환 해줬기 때문에 bark 호출 가능
            }
            //dogs dog = new mammal();//부코믈래스가 자식클래스로 변환은 불가능

            dogs dog2 = new dogs();
            cats cat2 = new cats();
            elephant el2 = new elephant();

            zookeeper keeper = new zookeeper(); // zookeeper 클래스는 wash(부모클래스) 형태로 부모를 받아와서
            // keeper.wash(dogs,cats,elephant) 형태의 소스 문제없이 사용 가능
            keeper.wash(dog2);
            keeper.wash(cat2);
            keeper.wash(el2);

            #endregion
        }
    }
}

Override

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace cs18_override
{
    class armorsuite
    {
        public virtual void init()
        {
            Console.WriteLine("기본 아머슈트");
        }
    }
    class ironman:armorsuite
    {
        public override void init()
        {
            base.init();
            Console.WriteLine("리펄서 빔");
        }
    }
    class warmachine:armorsuite
    {
        public override void init()
        {
            base.init();
            Console.WriteLine("미니건");
            Console.WriteLine("돌격소총");
        }
    }
    class parent
    {
        public void currentmethod()
        {
            Console.WriteLine("부모클래스 메서드");
        }
    }
    class child:parent
    {
        public new void currentmethod()
        {
            Console.WriteLine("자식클래스 메서드");
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("아머슈트 생산");
            armorsuite suite = new armorsuite();
            suite.init();

            Console.WriteLine("워머신 생산");
            warmachine machine = new warmachine();
            machine.init();

            Console.WriteLine("아이언맨 생산");
            ironman iron = new ironman();
            iron.init();

            parent par = new parent();
            par.currentmethod();

            child chd = new child();
            chd.currentmethod();
        }
    }
}

Interface

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace cs19_interface
{
    interface ILogger
    {
        void WriteLog(string log);
    }
    interface IFormattableLogger : ILogger
    {
        void WriteLog(string format, params object[] args); // args 다중 파라미터
    }
    class ConsoleLogger : ILogger
    {
        public void WriteLog(string log)
        {
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), log);
        }
    }
    class ConsoleLogger2 : IFormattableLogger
    {
        public void WriteLog(string format, params object[] args)
        {
            string message = string.Format(format, args);
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), message);
        }

        public void WriteLog(string log)
        {
            Console.WriteLine("{0} {1}", DateTime.Now.ToLocalTime(), log);
        }
    }
    class Car
    {
        public string Name { get; set; }
        public string color { get; set; }
        public void Stop()
        {
            Console.WriteLine("정지!");
        }
    }
    interface IHoverable
    {
        void Hover();   // 물에서 달린다
    }
    interface IFlyable
    {
        void Fly();     // 날다
    }
    class FlyHoverCar : Car,IFlyable,IHoverable
    {
        public void Fly()
        {
            Console.WriteLine("Fly"); 
        }
        public void Hover()
        {
            Console.WriteLine("수륙양용");
        }
    }
    internal class Program
    {
        static void Main(string[] args)
        {
            ILogger logger = new ConsoleLogger();
            logger.WriteLog("안녕~!!!");

            IFormattableLogger logger2 = new ConsoleLogger2();
            logger2.WriteLog("{0} x {1} = {2}", 6, 5, (6 * 5));
        }
    }
}

C#(WPF)

내용이 매우 쉬워서 깃헙 링크만 첨부

https://github.com/OHYUNBEOM/C_Sharp/tree/main/Day04/Day04WinApp/wf05_loginui

post-custom-banner

0개의 댓글