ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 오버라이드, 오버로드 (13일차)
    C# 2020. 6. 3. 17:37

    오버라이드

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_001
    {
        class Mammal
        {
            public virtual void Move()
            {
                Console.WriteLine("이동한다");
            }
        }
        class Lion : Mammal
        {
            public override void Move() //override 자리에 아무것도 안적으면 new로 번역한다.
            {
                Console.WriteLine("네발로 걷는다");
            }
        }
        class Whale : Mammal
        {
            public override void Move()
            {
                Console.WriteLine("수영한다");
            }
        }
        class Human : Mammal
        {
            public override void Move()
            {
                Console.WriteLine("두발로 걷는다.");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Mammal aMammal = new Mammal();
                aMammal.Move();
    
                aMammal = new Lion();
                aMammal.Move();
    
                aMammal = new Whale();
                aMammal.Move();
    
                aMammal = new Human();
                aMammal.Move();
    
    
    
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.Linq;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_001
    {
        class Mammal
        {
            public virtual void Move()
            {
                Console.WriteLine("이동한다");
            }
        }
        class Lion : Mammal
        {
            public override void Move() //override 자리에 아무것도 안적으면 new로 번역한다.
            {
                Console.WriteLine("네발로 걷는다");
            }
        }
        class Whale : Mammal
        {
            public override void Move()
            {
                Console.WriteLine("수영한다");
            }
        }
        class Human : Mammal
        {
            public override void Move()
            {
                Console.WriteLine("두발로 걷는다.");
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                //배열 객체
                Mammal[] aMammal = new Mammal[4] { new Mammal(), new Lion(), new Whale(), new Human()};
                aMammal[0] = new Mammal();
                aMammal[1] = new Lion();
                aMammal[2] = new Whale();
                aMammal[3] = new Human(); //두가지 방법 가능
                
                aMammal[0].Move();
                aMammal[1].Move();
                aMammal[2].Move();
                aMammal[3].Move();
    
                foreach(Mammal Temp in aMammal)
                {
                    Temp.Move();
                }
    
                for (int a= 0; a < aMammal.Length;a++)
                {
                    aMammal[a].Move();
                }                   //두가지 방법 가능
    
    
            }
        }
    }

    ToString 오버라이드

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_003
    {
        public class Point
        {
            int x, y;
            public Point(int x, int y)
            {
                this.x = x;
                this.y = y;
            }
            public override string ToString()
            {
                return "x : " + x + " y : " + y;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Point pt = new Point(2, 10);
                Console.WriteLine(pt.ToString());
    
            }
        }
    }

    오버라이드

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_004
    {
        class Book
        {
            decimal isbn13;
            string title;
            string contents;
            public Book(decimal isbn13, string title, string contents)
            {
                this.isbn13 = isbn13;
                this.title = title;
                this.contents = contents;
            }
            public override bool Equals(object obj) //최상위 클래스의 매개변수
            {
                if(obj==null) //인자로 받은 객체가 null인지 판단
                {
                    return false;
                }
                Book book = obj as Book; //매개변수가 Book클래스라면 매개변수가
                                         //book에 obj가 가리키고 있는 값을 넘겨 줌
                if(book==null) //Book클래스 인지 아닌지 판단.
                {
                    return false;
                }
    
                return this.isbn13 == book.isbn13; //각 객체 안의 isbn 비교 후 bool이므로 true false 반환
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Book book1 = new Book(9788998139018, "리버스 엔지니어링 바이블:", ". . . . .");
                Book book2 = new Book(9788998139018, "리버스 엔지니어링 바이블:", ". . . . .");
                Book book3 = new Book(9788992939409, "파이썬 3.6프로그래밍", ". . . . .");
    
                Console.WriteLine(book1.Equals(book2));//book1과 book2 비교
                Console.WriteLine(book2.Equals(book3));//book2와 book3 비교
                //isbn 값이 같으면 true 틀리면 false 반환
            }
        }
    }
    

     

    메서드 오버로드

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_005
    {
        class Mathmatics
        {
            public int Abs(int value)
            {
                return(value >= 0) ? value : -value;
            }
            public double Abs(double value)
            {
                return (value >= 0) ? value : -value;
            }
            public decimal Abs(decimal value)
            {
                return (value >= 0) ? value : -value;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Mathmatics math = new Mathmatics();
                Console.WriteLine(math.Abs(-5));
                Console.WriteLine(math.Abs(-10.052));
                Console.WriteLine(math.Abs(20.01m));
            }
        }
    }
    

    연산자 오버로드

    using System;
    using System.CodeDom.Compiler;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.CompilerServices;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_008
    {
        class Market
        {
            public int iApple;
            public int iOrange;
            public override string ToString()
            {
                return "{iApple = " + iApple + ", iOrange = " + iOrange+"}";
            }
            public static Market operator + (Market obj1, Market obj2)
            {
    
                Market obj3 = new Market();
                
                obj3.iApple = obj1.iApple + obj2.iApple;
                obj3.iOrange = obj1.iOrange + obj2.iOrange;
                Console.WriteLine("+ 연산자 호출됨");
                Console.WriteLine("obj1= " + obj1);
                Console.WriteLine("obj2= " + obj2);
                obj2.ToString();
                return  obj3;
            }       
    
    }
        class Program
        {
            static void Main(string[] args)
            {
                Market 가게1 = new Market();
                Market 가게2 = new Market();
    
                가게1.iApple = 10;
                가게1.iOrange = 10;
    
                가게2.iApple = 100;
                가게2.iOrange = 100;
                Market 가게3 = 가게1 + 가게2;
                Console.WriteLine("가게3의 iApple과 iOrange는 {0}개", 가게3);
                
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_009
    {
        class Complex
        {
            int Real;
            int Image;
            public Complex()
            {
            }
            public Complex(int Real, int Image)
            {
                this.Real = Real;
                this.Image = Image;
            }
    
            public override string ToString()
            {
                //{ 3 + 4i }
                return "{ " + Real + ((Image > 0) ? " + " + Image : " - " + Image * -1) + "i }";
            }
            static public Complex operator + (Complex iNum1, Complex iNum2)
            {
                Complex iNum3 = new Complex();
    
                iNum3.Real = iNum1.Real + iNum2.Real;
                iNum3.Image = iNum1.Image + iNum2.Image;
                return iNum3;
            }
            static public Complex operator -(Complex iNum1, Complex iNum2)
            {
                Complex iNum3 = new Complex();
    
                iNum3.Real = iNum1.Real - iNum2.Real;
                iNum3.Image = iNum1.Image - iNum2.Image;
                return iNum3;
            }
            static public Complex operator *(Complex iNum1, Complex iNum2)
            {
                Complex iNum3 = new Complex();
    
                iNum3.Real = (iNum1.Real * iNum2.Real)-(iNum1.Image*iNum2.Image);
                iNum3.Image = (iNum1.Real * iNum2.Image) + (iNum1.Image * iNum2.Real);
                return iNum3;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Complex num1 = new Complex(3,4);
                Complex num2 = new Complex(5,6);
    
                Complex num3 = num1 + num2;
                Console.WriteLine(num3);
                Complex num4 = num1 - num2;
                Console.WriteLine(num4);
                Complex num5 = num1 * num2;
                Console.WriteLine(num5);
    
    
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200603_009
    {
        class Complex
        {
            int Real;
            int Image;
            public Complex()
            {
            }
            public Complex(int Real, int Image)
            {
                this.Real = Real;
                this.Image = Image;
            }
    
            public override string ToString()
            {
                //{ 3 + 4i }
                return "{ " + Real + ((Image > 0) ? " + " + Image : " - " + Image * -1) + "i }";
            }
            static public Complex operator + (Complex iNum1, Complex iNum2)
            {
                
                return new Complex(iNum1.Real + iNum2.Real, iNum1.Image + iNum2.Image); ;
            }
            static public Complex operator -(Complex iNum1, Complex iNum2)
            { 
                return new Complex(iNum1.Real - iNum2.Real, iNum1.Image - iNum2.Image);
            }
            static public Complex operator *(Complex iNum1, Complex iNum2)
            {
                return new Complex((iNum1.Real * iNum2.Real) - (iNum1.Image * iNum2.Image), (iNum1.Real * iNum2.Image) + (iNum1.Image * iNum2.Real));
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Complex num1 = new Complex(3,4);
                Complex num2 = new Complex(5,6);
    
                Complex num3 = num1 + num2;
                Console.WriteLine(num3);
                Complex num4 = num1 - num2;
                Console.WriteLine(num4);
                Complex num5 = num1 * num2;
                Console.WriteLine(num5);
    
    
            }
        }
    }
    
Designed by Tistory.