继承之隐藏方法、抽象类抽象方法知识点和思考练习
2009-09-24 23:44
375 查看
知识点
(五)抽象类和抽象方法
抽象类
在一些情况下,基类只表示一种抽象的概念,只为它的派生类提供公共的界面,却不与具体的事物相联系。为此,C#中引入抽象类的概念,抽象类是指不能被实例化的类,是派生类的基础。通过部分实现或不实现,抽象类可作为派生其他类的模板。用abstract关键字
abstract class 类名 {}
抽象方法
抽象类既可包含非抽象方法,也可包含抽象方法。抽象方法的特征:
1)抽象方法是隐式的虚方法
2)只允许抽象类中声明抽象方法
3)抽象方法声明不提供实际的实现,没有方法体,方法声明以一个封号结束,并且在声明后没有大括号。如:
public abstract void Area();
如果在抽象类中声明了抽象方法,则该抽象类的派生类必须实现基类的抽象方法,否则该派生类不能被实例化。派生类中可以使用override修饰符来实现基类中的抽象方法。
思考练习
(五)抽象类和抽象方法
抽象类
在一些情况下,基类只表示一种抽象的概念,只为它的派生类提供公共的界面,却不与具体的事物相联系。为此,C#中引入抽象类的概念,抽象类是指不能被实例化的类,是派生类的基础。通过部分实现或不实现,抽象类可作为派生其他类的模板。用abstract关键字
abstract class 类名 {}
抽象方法
抽象类既可包含非抽象方法,也可包含抽象方法。抽象方法的特征:
1)抽象方法是隐式的虚方法
2)只允许抽象类中声明抽象方法
3)抽象方法声明不提供实际的实现,没有方法体,方法声明以一个封号结束,并且在声明后没有大括号。如:
public abstract void Area();
如果在抽象类中声明了抽象方法,则该抽象类的派生类必须实现基类的抽象方法,否则该派生类不能被实例化。派生类中可以使用override修饰符来实现基类中的抽象方法。
思考练习
using System; namespace Inherit { public class Dimension { protected double x, y; protected const double PI = Math.PI; public Dimension(double x1, double y1) { x = x1; y = y1; } public double Area() { return x * y; } } public class Sphere : Dimension { public Sphere(double a, double b) : base(a, b) { } new public double Area() { return PI * x * y; } } public class Program { static void Main() { Sphere sphere1 = new Sphere(6, 7); Console.WriteLine("The sphere's area is {0}", sphere1.Area()); Console.ReadLine(); } } }
using System; namespace Inherit { public abstract class Dimension { protected double x, y; protected const double PI = Math.PI; public Dimension(double x1, double y1) { x = x1; y = y1; } public abstract double Area(); } public class Sphere : Dimension { public Sphere(double a, double b) : base(a, b) { } public override double Area() { return PI * x * y; } } public class Program { static void Main() { Sphere sphere1 = new Sphere(6, 7); Console.WriteLine("The sphere's area is {0}", sphere1.Area()); Console.ReadLine(); } } }
相关文章推荐
- 继承之虚方法和重写方法知识点和思考练习
- 构造函数、析构函数、方法知识点、练习小结和思考练习,及书里发现的错误
- 继承之调用基类构造函数知识点和思考练习(用了三层继承,重载了各层的构造函数,以期全面实验调用基类构造函数)
- java基础知识6-- 抽象类,抽象方法,接口,构造方法,类方法等易混淆的知识点
- 请问Java中抽象类中的抽象方法是否一定要被继承类实现?
- JavaSE8基础 子类必须重写所继承的抽象类中所有抽象方法
- 继承之基类和派生类知识点和思考练习
- 接口和抽象类的区别、抽象方法的一些特点、抽象类是否可继承实体类(concrete class)
- (26)抽象类引入、特点、和一般类区别、抽象继承练习
- 抽象类继承抽象类可以不重写父类的抽象方法,普通类继承抽象类必须重写父类中的抽象方法,实现接口也是同样的道理
- 子类A继承抽象类B,就一定要重写B的抽象方法
- 学习数组类时,碰到typeof(),对其实验引起的一连串知识点、学习小结和思考练习(涉及成员对象变量、成员常量、抽象类Type等知识)
- 继承之接口知识点和思考练习
- 继承的方法 Object.clone() 不能隐藏 FCloneable 中的公用抽象方法
- 2.0 面向对象 类与实例(关键字)、封装、继承、多态(虚方法,抽象类,抽象方法,接口)
- 面试题2——JAVA中方法和变量在继承中的覆盖和隐藏
- Delphi的抽象方法与抽象类
- C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别
- scala-12抽象类、抽象字段、抽象方法
- 学习抽象类和接 4000 口的实现,抽象方法的创建和实现