C#入门10.5——抽象类与抽象方法声明

抽象类与非抽象类

抽象类前有关键字abstract,没有则为非抽象类

声明格式

public abstract class Fly//抽象类要加关键字

{

    public abstract void flys();//声明抽象方法不能有方法体

}

抽象类不能实例化,必须通过集成由派生类实现其抽象方法,因此不能用new,不能sealed

如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类

如果一个非抽象类从抽象类中派生,则其必须通过重载来实现所有继承而来的抽象成员

定义:方法前有abstract就被称为抽象方法,抽象方法不提供任何实际实现

public abstract class Class1
    {
        public abstract void Method1();//抽象类与抽象方法声明中必须包含abstract,并且抽象方法不能有方法体。
        //抽象类的声明就是为了实现派生或继承,所以我们不能将它同时标记为sealed
        public abstract void Method2();

        public void Add(int a,int b)//抽象类中可以包含非抽象方法
        {
            Console.WriteLine(a+b);
        }
    }
public abstract class Class2: Class1//如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类
    {
        public override void Method1()
        {
            Console.WriteLine("这是抽象方法1");
        }
    }


注意:抽象方法必须在抽象类中声明

不能使用static、private或virtual修饰符

方法不能有任何可执行程序,哪怕是方法体{}

重写抽象方法时采用override


实例1:Pow类定义了一个求幂对象的抽象概念。Pow类方法是抽象的,PowB类和PowC类是Pow的具体实现。

 class Program
    {
        static void Main(string[] args)
        {
            PowB myPowB = new PowB();
            myPowB.PowMethod(2,10);
            PowC myPowC = new PowC();
            myPowC.PowMethod(2,10);
            Console.ReadKey();
        }
    }
public abstract class Pow
    {
        public abstract void PowMethod(int x, int y);
        //abstract方法 没有自己的实现
        //virtual方法  有自己的实现
        //共同点:都可以通过override来实现对原有方法的重写

    }
 class PowB:Pow
    {
        public override void PowMethod(int x,int y)
        {
            int pow = 1;
            for(int i=1;i<=y;i++)
            {
                pow *= x;
            }
            Console.WriteLine("求幂的结果是" + pow);
        }

    }
class PowC : Pow
    {
        public override void PowMethod(int x, int y)
        {
            Console.WriteLine("求幂的结果是"+System.Math.Pow(x, y));
        }

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值