为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

4 回答

public static“ explicit” operator Cat(Dog dog)

0 回复 有任何疑惑可以回复我~

改成隐士转换

0 回复 有任何疑惑可以回复我~
#1

乌薪王 提问者

没有用啊,上面改成implicit,下面去掉(Cat)
2018-11-04 回复 有任何疑惑可以回复我~

输出:我叫hommy

          wow

          我叫

          meow



0 回复 有任何疑惑可以回复我~
#1

乌薪王 提问者

我自己来解释一下把,形参不是字段
2018-11-06 回复 有任何疑惑可以回复我~

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();
            
        }
    }
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信