zoukankan      html  css  js  c++  java
  • 抽象类和抽象方法

    抽象类表示一种抽象的概念, 只是希望以它为基类的派生类有共同的函数成员和数据成
    员。抽象类使用abstract修饰符,对抽象类的使用有以下几点规定:
    � 抽象类只能作为其它类的基类,它不能直接被实例化。
    � 抽象类允许包含抽象成员,虽然这不是必须的。抽象成员用abstract修饰符修饰。
    � 抽象类不能同时又是密封的。
    � 抽象类的基类也可以是抽象类。 如果一个非抽象类的基类是抽象类, 则该类必须通过覆
    盖来实现所有继承而来的抽象方法, 包括其抽象基类中的抽象方法, 如果该抽象基类从
    其它抽象类派生,还应包括其它抽象类中的所有抽象方法。

    请看下面的示例:

     1 abstract class Figure//抽象类定义
     2 { protected double x=0,y=0;
     3 public Figure(double a,double b)
     4 { x=a;
     5 y=b;
     6 }
     7 public abstract void Area();//抽象方法,无实现代码
     8 }
     9 class Square:Figure///类Square定义
    10 { public Square(double a,double b):base(a,b)
    11 {}
    12 public override void Area()//不能使用new,必须用override
    13 { Console.WriteLine("矩形面积是:{0}",x*y);}
    14 }
    15 class Circle:Figure///类Square定义
    16 { public Circle(double a):base(a,a)
    17 {}
    18 public override void Area()
    19 { Console.WriteLine("园面积是:{0}",3.14*x*y);}
    20 }
    21 class Class1
    22 { static void Main(string[] args)
    23 { Square s=new Square(20,30);
    24 Circle c=new Circle(10);
    25 s.Area();
    26 c.Area();
    27 }
    28 }


    程序输出结果为:
    矩形面积是:600
    园面积是:314
    抽象类Figure提供了一个抽象方法Area(), 并没有实现它, 类Square和Circle从抽象类
    Figure中继承方法Area(),分别具体实现计算矩形和园的面积。
    在类的基本概念一节中, 定义一个描述个人情况的类Person, 它只是描述了一个人最一
    般的属性和行为,因此不希望生成它的对象,可以定义它为抽象类。
    注意: C++程序员在这里最容易犯错误。 C++中没有对抽象类进行直接声明的方法, 而认
    为只要在类中定义了纯虚函数, 这个类就是一个抽象类。 纯虚函数的概念比较晦涩, 直观上
    不容易为人们接受和掌握,因此C#抛弃了这一概念。

    勤劳一日,便得一夜安眠;勤劳一生,便得幸福长眠。
  • 相关阅读:
    vim复制
    嵌入式Linux学习(二)
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1025 数的划分
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
  • 原文地址:https://www.cnblogs.com/zhaomengmeng/p/3922569.html
Copyright © 2011-2022 走看看