最近在看Beginning c#object....发现抽象类有个用法,之前一直没注意到,所以来这和大家分享下....
之前都知道从abstract类可以派生到其他类(abstract or 非abstract)...但一直没有注意到可以从非abstract类派生到abstract类!....但仔细想来这样做有啥用呢?基于abstract方法的一个特点---强制多态,我们可以利用它要求之后的类重写被改为abstract的方法.
看个例子:
abstract class A : Object
{
//[img]http://images.cnblogs.com/dot.gif" alt="[/img].
public abstract override string ToString();
}
sealed class B : A
{
public override string ToString()
{
return string.Empty;
}
}
abstract的A中把object的ToString()改为abstract从而在之后的类(比如这里的B)中强制要求override方法!
分享到:
相关推荐
要充分利用Java的多态性,还需要了解以下几点: 1. 抽象类与接口:抽象类可以包含抽象方法和非抽象方法,而接口只能声明抽象方法。类可以实现多个接口,但只能继承一个抽象类。两者都可以用来实现多态,但适用场景...
•接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 接口与抽象类的区别 •接口里只能包含抽象方法,不同包含已经提供实现的方法;抽象类则完全可以包含普通...
抽象类不能被实例化,但可以作为其他类的基类,强制子类提供虚函数的具体实现。 5. **构造函数**:在类中,构造函数用于初始化对象的状态。在实验的各个类中,我们看到每个类都有构造函数,负责设置对象的初始属性...
抽象类可以包含抽象方法(无实现的方法)。接口(interface)则更像一种契约,强制实现它的类提供特定的方法。一个类可以实现多个接口,但只能继承一个类。 4. **密封类(Sealed)**:为了防止进一步的继承,C#提供...
抽象类的主要作用是定义一个接口,强制派生类实现特定的行为。例如: ```cpp class Abstract { public: virtual void doSomething() = 0; }; class Concrete : public Abstract { public: void doSomething() ...
**接口** 则是完全抽象的,只包含常量和抽象方法,用于实现多继承的效果,同时提供了一种强制实现某些方法的机制。 在实际开发中,我们还会利用Java的类库,如集合框架(List、Set、Map等),它们都是基于面向对象...
在.NET框架2.0版本中,C#、VB.NET等语言提供了丰富的支持,使得开发者可以充分利用OOP的优势来构建可维护、可扩展的软件系统。 标题中的“使用.NET 2.0 模板的面向对象编程基础”可能是指通过.NET 2.0框架中的模板...
从给定的文件信息中,我们可以提取出一系列关于C#编程语言的重要知识点,涉及了类、对象、变量、修饰符、方法重写...C#的语法和特性充分利用了.NET框架的能力,使其成为开发高效、安全和易于维护的应用程序的理想选择。
在Java中,抽象可以通过抽象类和接口实现,抽象类中可以包含抽象方法(没有方法体),而接口则完全由抽象方法组成,两者都用于定义一种模板,强制子类或实现类遵循一定的规范。 2. **继承**:继承允许子类继承父类...
在C#编程中,"多形窗体"(Polymorphic Forms)是一个关键概念,它源自面向对象编程的多态性原则。多态性允许不同的对象...在实际开发中,我们应该充分利用继承、接口、事件处理等机制,构建高效、灵活的多形窗体系统。
抽象类用于定义一组公共方法,但不提供具体实现,由子类来完成。接口(如`System.Collections.Generic.IEnumerable<T>`)则强制实现一组方法,提供了多态性的另一种形式。在WinForms中,可以定义抽象的业务逻辑类,...
"OOP-Calculator"项目是实现一个抽象的计算器,它充分运用了C++的OOP特性,包括封装、继承、多态和抽象类等概念。 1. **封装**:封装是OOP的核心原则之一,它将数据和操作这些数据的方法绑定在一起,形成一个独立的...
6. **抽象类(Abstract Class)和抽象方法**:强制子类实现某些方法。 7. **final关键字**:用于防止类或方法被继承或重写。 **错误处理和异常处理** PHP 5引入了错误处理的全新机制——异常处理。传统的PHP错误...
- **抽象类中的抽象方法**:抽象类中可以包含抽象方法,用于强制派生类实现特定的行为。 - **对象的等价比较**:当比较两个对象是否相等时,应优先使用`Object.Equals()`方法。 - **声明与初始化**:及时初始化变量...
抽象类主要用于定义接口规范,强制派生类遵循一定的行为模式。 #### 5.5 所有类的根:Object 在C#中,所有的类都是从Object类派生而来,Object类提供了基本的成员方法,如Equals()、ToString()、GetHashCode()等,...
源代码中会通过接口和抽象类展示多态性。 7. **接口**:接口定义了一组方法签名,提供了一种强制实现特定行为的方式。源代码中会有接口的使用示例,展示如何实现接口。 8. **异常处理**:通过try-catch语句,C#...
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...
15. **抽象类(Abstract Classes)**:抽象类包含抽象方法(无实现的方法),用于定义基类,如`abstract class Animal`。 16. **继承(Inheritance)**:C#支持单一继承,一个类可以通过`class Bird : Animal`这样...
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,...
默认方法允许在接口中定义带有实现的方法,不强制实现类重写这些方法。这使得在不破坏现有接口的情况下,可以为接口添加新的功能。静态方法则可以直接在接口上调用,无需实例化接口的实现类,这为工具方法提供了一个...