为什么这样编译会出错呢?

来源:2-5 抽象方法和抽象类

Pipi大魔王

2017-09-29 16:26

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace ConsoleApplication1

{

    public class pet

    {

        public pet(string name)

        {

            _name=name;

        }

        protected string _name;

        public void nameprint()

        {

            Console.WriteLine("pet's name is " +_name);

        }

       virtual public void speak()

        {

            Console.WriteLine("宠物在说话:");

        }//类的重写

    }

    public class dog:pet

    {

        public dog(string name): base(name)

        { 


        }

        new public void nameprint()

        {

            Console.WriteLine("宠物的名字是:" + _name);

        }//对基类方法的隐藏

        override public void speak()

        {

            Console.WriteLine(_name + "的叫声为:汪汪");

        }//对基类方法的重写

    }

    class Program

    {

        static void Main(string[] args)

        {

            pet[] pets=new pet[]{new dog("ja"),new dog("lol")};

            for(int i=0;i<pets.Length;i++)

            {

                pets[i].speak;

            }


        }

    }

}


写回答 关注

2回答

  • _F_x
    2018-07-02 06:07:27

     public class dog:pet

        {

            public dog(string name): base(name)

            { 

  • 起航5
    2017-10-04 15:30:01

     pets[i].speak();

    最后一行是调用函数,要加括号

C#面向对象编程

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

68857 学习 · 153 问题

查看课程

相似问题