为什么我原来的构造方法没有了

来源:4-2 自定义转换

乌薪王

2018-11-04 19:10

dog转换成cat之后,cat没有继承dog的名字(构造方法),名字变成了空

写回答 关注

4回答

  • 慕尼黑7387225
    2018-11-04 19:37:03

    public static“ explicit” operator Cat(Dog dog)

  • 慕尼黑7387225
    2018-11-04 19:35:07

    改成隐士转换

    乌薪王

    没有用啊,上面改成implicit,下面去掉(Cat)

    2018-11-04 22:03:35

    共 1 条回复 >

  • 乌薪王
    2018-11-04 19:33:08

    输出:我叫hommy

              wow

              我叫

              meow



    乌薪王

    我自己来解释一下把,形参不是字段

    2018-11-06 12:59:05

    共 1 条回复 >

  • 乌薪王
    2018-11-04 19:31:26

    using System;

    namespace 装箱与拆箱
    {   abstract public class pet
        {
            public string name;
            
            public pet(string name)
            {
                Console.WriteLine("我叫" + name);
            }
            abstract public void speak();
           
        }
        public class Dog : pet
        {
            public Dog(string name):base(name)
            {
              
            }
           
            public override void speak()
            {
                Console.WriteLine("wow");
            }
            public static explicit operator Cat(Dog dog)
            {
                return new Cat(dog.name);
            }
        }
        public class Cat : pet
        {
            public Cat(string name) : base(name)
            {

            }
            public override void speak()
            {
                Console.WriteLine("meow");
            }
           
        }
       
        class Program
        {
            static void Main(string[] args)
            {
                Dog dog = new Dog("hommy");
                dog.speak();
                Cat cat = (Cat)dog;
                cat.speak();
                
            }
        }
    }


C#面向对象编程

本系列教程主要是,带你学习C#面向对象编程的编程思想、编程技巧

68857 学习 · 153 问题

查看课程

相似问题