黑马程序员技术交流社区

标题: 什么是抽象函数? [打印本页]

作者: jy郑娟    时间: 2013-3-15 14:45
标题: 什么是抽象函数?
什么是抽象函数?
作者: 李行周    时间: 2013-3-15 14:57
抽象类中可以定义抽象方法,如果一个方法要声明为抽象方法,则方法前加上abstract修饰符即可。抽象方法是一个新的虚方法,它不提供具体的方法实现代码。只能在抽象类中声明抽象方法,对抽象方法,不能使用static或virtual修饰符,而且方法中不能有任何可执行代码,只要给出方法的原型就可以了。

作者: 丘凤光    时间: 2013-3-15 15:20
当多个类中出现相同功能,但是功能主体不同,这是可以进行向上抽取,这时,只能抽取功能定义,不能抽取功能主体。抽取出来的功能定义就是抽象函数。

如:
  1. abstract class A
  2. {
  3.      abstract void test();   //B、C类中抽取出来的抽象函数
  4. }

  5. abstract class B extends A   //B继承A
  6. {
  7.      void test()
  8.       {System.out.print("bbb");}
  9. }

  10. abstract class C extends A    //C继承A
  11. {
  12.      void test()
  13.      {System.out.print("ccc");}
  14. }
复制代码
抽象函数的特点有:
1、抽象函数一定存在抽象类中;
2、抽象方法和抽象类都必须被abstract关键字修饰。

抽象函数没有什么特别的意义,抽象类和一般类没什么大的区别,仅仅是不让该类创建对象。
继承中,抽象类中的抽象函数要被使用,必须有子类复写期所有的抽象方法后,建立系类对象后调用。
作者: 宋健    时间: 2013-3-15 17:50
抽象函数无具体实现代码,子类重写抽象函数以实现多态。
作者: 李准    时间: 2013-3-16 01:08
C#允许把类和函数声明为abstract,抽象类不能实例化,而抽象函数没有执行代码,在子类中重写父类的方法。
作者: 秦二江    时间: 2013-3-16 15:20
抽象函数就是抽象方法
抽象类中的所有方法不一定全是抽象方法,但是包含抽象方法的类被称作抽象类
抽象方法 没有方法体,即方法没有 具体实现
同样 不允许包含 { }
例如:public abstract class Animal //编写类
{
public abstract string Sound(); //创建抽象方法
}

抽象方法的 实现 必须 让派生类实
在派生类中,必须实现基类中的抽象方法
在派生类中,必须使用override 关键字,来实现抽象的方法    来表示此方法 是对基类的抽象方法的实现

例子:
public class People:Animal //派生自Animal 类
{
public string country;
public override string Sound() //实现抽象方法
{
return "language"; //返回值
}
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2