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

原创 2016年08月28日 22:42:05

抽象类与非抽象类

抽象类前有关键字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));
        }

    }




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#抽象类与抽象方法

  • 2011年05月10日 16:17
  • 99KB
  • 下载

C__抽象类与抽象方法

  • 2011年10月24日 15:13
  • 99KB
  • 下载

C#基础知识整理:基础知识(6) 抽象类和抽象方法

在实际项目中,当我们设计一个父类时,经常会遇到这个类不能确定它的具体执行流程的。比如我设计一个文件类: public class AFile { private st...

C#抽象方法和抽象类

C#抽象方法 和抽象类 抽象类一般用于表达比较抽象的事物,如:“宠物”,它并不是一个实实在在存在的东西,而是一些小动物的代称,是抽象的。而抽象方法则说明这种抽象事物有某种特性,但是当抽象事物具体到某一...

C# 抽象类和抽象方法详解

首先,在学习抽象方法的时候,我们必须清楚在C#中为什么会存在抽象方法,或者说为什么需要抽象方法。 我们知道,接口可以包含方法的申明和属性,但是方法中不包含代码,实现这个接口的方法必须包含接口...

c# 类,抽象类 抽象方法 的理解

本文是学习抽象类的,以及抽象类中静态字段,静态方法的知识。 我写本文前对抽象类的理解: A 是为了继承的需要,或者是为了多态的需要,把具有类似行为的一组概念写成一个抽象类,但是抽象类里面不实现任何...
  • sdgxboy
  • sdgxboy
  • 2012年01月08日 02:27
  • 654

C# 抽象方法和抽象类

在C#中,用abstract修饰符来表示抽象类,即类是不完整的,使用时需要注意一下三点: (1)抽象类只能用作基类,也就是说抽象类不能直接实例化,对抽象类使用new运算符时编译时会出现错误。 (2...

C# 抽象类和抽象方法知识总结

1 抽象类不能被实例化  定义抽象类AbstractClass: abstract class AbstractClass { public abstract void AbstractM...
  • tiana0
  • tiana0
  • 2013年11月20日 21:49
  • 4717

C#中的抽象类和抽象方法

一、抽象类和抽象方法的概念         在基类中的虚方法有时候不可能被调用到,而只是表达一种抽象的概念,用以为它的派生类提供一个公共的界面。 C#中引入了抽象类(abstract class)的概...

C#抽象类和抽象方法

如果一个类不与具体的事物相联系,而只是表达一种抽象的概念,仅仅是作为其派生类的一个基类,这样的类就是抽象类,在抽象类中声明方法时,如果加上abstract时就是抽象方法1.抽象类概述及声明抽象类与非抽...
  • thigdo
  • thigdo
  • 2011年07月10日 13:47
  • 160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#入门10.5——抽象类与抽象方法声明
举报原因:
原因补充:

(最多只允许输入30个字)