抽象类抽象方法

Posted cicily

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类抽象方法相关的知识,希望对你有一定的参考价值。

abstract public void Func(); 抽象方法不能有函数体{},派生类中必须得override重写;其所在的类必须声明为抽象类

abstract public class C  抽象类是无法实例化的。

virtual public void Func()  虚方法可以有函数体,可以在派生类中override重写,也可以不重写。

abstract public class Pet//当包含抽象方法时,必须用abstract声明
    {
        protected string Name;//protected 保护级别,派生类可访问
        public Pet(string name)//基类的构造函数
        {
            Name = name;
        }
        public void PrintName()
        {
            Console.WriteLine("Print"+Name);
        }

        //virtual public void Speak()   //虚方法//如果该方法够抽象,抽象到其实体是没有机会被用到并且都在该类的派生类中有各种不同实现的情况下,就可以改成抽象方法
        //{
        //    Console.WriteLine("I‘m "+Name);  
        //}
        abstract public void Speak();//抽象方法,其所在类也得换为abstract声明。在其派生类中必须通过override做具体实现
    }
    public class Dog : Pet
    {
        public Dog(string name):base(name)//构造函数//用关键字base调用了基类的构造函数
        {
           
        }
        new public void PrintName()
        {
            Console.WriteLine("子打印"+base.Name);
        }
        override public void Speak()//重写基类Pet的虚方法
        {
            Console.WriteLine("子说" + Name);
        }
    }
    public class Cat : Pet
    {
        public Cat(string name):base(name)//构造函数//用关键字base调用了基类的构造函数
        {
            
        }
        new public void PrintName()
        {
            Console.WriteLine("子打印" + Name);
        }
        override public void Speak()//重写基类Pet的虚方法
        {
            Console.WriteLine("子说" + Name);
        }
    }

 

以上是关于抽象类抽象方法的主要内容,如果未能解决你的问题,请参考以下文章

代码学习PHP面向对象之抽象类与接口

如何将 ViewBinding 与抽象基类一起使用

抽象类

JAVA——面向对象——抽象类和抽象方法abstract

Java学习之抽象类

接口和抽象类的相同与区别