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