zoukankan      html  css  js  c++  java
  • 自定义转换

    对自定义的结构或者类定义显示或隐式转换

    隐式转换  public static是必不可少的

    隐式 关键字 implicit

    操作 关键字 operator 

     class Program
        {
            static void Main(string[] args)
            {
                
    
                Dog D2 = new Dog("DD2");
                Cat C2 = D2;//已经在Dog类中定义了隐式转换
                C2.PrintName();
                C2.Speak();
    
            }
    
        }
        abstract public class Pet
        {
            protected string Name;
            public Pet(string name)
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
           
            abstract public void Speak();
        }
        public class Dog : Pet
        {
            static int Num;
            static Dog()
            {
                Num = 0;
            }
            public Dog(string name) : base(name)
            {
                ++Num;
            }
            new public void PrintName()
            {
                Console.WriteLine("子print名字是 " + base.Name);
            }
            //override public void Speak()
            sealed override public void Speak()
            {
                Console.WriteLine("子说,我是狗狗 " + Name);
            }
            static public void ShowNum()
            {
                Console.WriteLine("Dog's number = " + Num);
            }
            public void Lost()
            {
                --Num;
                Console.WriteLine(Name + " is Lost!");
            }
    
            public static implicit operator Cat(Dog dog)//隐式转换
            {
                return new Cat(dog.Name);
            }
        }
     public class Cat : Pet,IPlayWoolBall,IEatFish
        {
            public Cat(string name):base(name)
            {
                
            }
            new public void PrintName()
            {
                Console.WriteLine("子Print我的名字是 " + Name);
            }
            override public void Speak()
            {
                Console.WriteLine("子说,我是猫猫 " + Name);
            }
            public void PlayWoolBall()
            {
                Console.WriteLine(Name+" play wool ball");
            }
            public void EatFish()
            {
                Console.WriteLine(Name+" eat fish");
            }
        }

    显示转换 关键字 explicit

     class Program
        {
            static void Main(string[] args)
            {
                 Cat c3 = new Cat("CC3");
                Dog D3 = (Dog)c3;//把cat强制的转化成一只Dog
                D3.PrintName();
                D3.Speak();
    
            }
    
        }
        abstract public class Pet
        {
            protected string Name;
            public Pet(string name)
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
           
            abstract public void Speak();
        }
        public class Dog : Pet
        {
            static int Num;
            static Dog()
            {
                Num = 0;
            }
            public Dog(string name) : base(name)
            {
                ++Num;
            }
            new public void PrintName()
            {
                Console.WriteLine("子print名字是 " + base.Name);
            }
            //override public void Speak()
            sealed override public void Speak()
            {
                Console.WriteLine("子说,我是狗狗 " + Name);
            }
            static public void ShowNum()
            {
                Console.WriteLine("Dog's number = " + Num);
            }
            public void Lost()
            {
                --Num;
                Console.WriteLine(Name + " is Lost!");
            }
    
           
        }
     public class Cat : Pet,IPlayWoolBall,IEatFish
        {
            public Cat(string name):base(name)
            {
                
            }
            new public void PrintName()
            {
                Console.WriteLine("子Print我的名字是 " + Name);
            }
            override public void Speak()
            {
                Console.WriteLine("子说,我是猫猫 " + Name);
            }
            public void PlayWoolBall()
            {
                Console.WriteLine(Name+" play wool ball");
            }
            public void EatFish()
            {
                Console.WriteLine(Name+" eat fish");
            }
            public static explicit operator Dog(Cat cat)//显式转换
            {
                return new Dog(cat.Name);
            }
        }
  • 相关阅读:
    java9
    java8
    java7
    JavaScript将字符串拆分为数组
    JavaScript return false
    Java中前台往后台传多个id参数
    Easyui清除tree的选中
    jquery easyui tree的全选与反选
    android源码开发基础知识了解
    Android activity的生命周期
  • 原文地址:https://www.cnblogs.com/cicily/p/10935155.html
Copyright © 2011-2022 走看看