对抽象、静态的理解

Posted on 2010-07-30 17:09  DBH_Tiger  阅读(467)  评论(1)    收藏  举报

      抽象类:包含抽象方法的类叫做抽象类,抽象类中可以有一个或多个抽象方法,也可以有构造函数(有什么用呢?)、具体方法以及数据成员.

      抽象方法: 是带有Abstract标示的没有方法体的方法,抽象类天生就是用来继承的,继承了抽象类(类之间为单继承)的子类必须重写(override)父类(抽象类)中的

抽象方法,要是没有重写,则子类也必须声明为Abstract,否则编译不会通过。要是抽象类和继承它的子类中有同名(都叫method)的非抽象方法(抽象方法由于要被

重写,所以也是同名的),则要在子类中使用new 关键字(不使用编译也可以通过),这时候如果使用子类实例,像这样:Child child=new Child();child.method() 会

调用子类中的method方法,要是使用父类实例子类,像这样:Parent parent=new Parent(); parent.method() 调用的方法则是父类中的method.

      对于抽象方法的实现,即重写,需要在子类中使用override关键字来完成。这点和Java中的重写小有区别。

  至于抽象类中构造函数的作用,可以这样理解:虽然抽象类不能被实例化,可是一旦有子类继承它,无论子类中有没有默认的构造方法或是对构造方法进行了重

载,在子类被实例化的时候,父类的构造方法都会执行,我们可以利用这点来对父类中的参数进行实例化或其他操作,要是需要在构造函数中对静态的成员变量进行

初始化,则需要将构造函数声明为静态的。使用私有静态构造函数创建的类在功能上与静态类相同,不能创建静态类的实例。  

  抽象类是不能被声明为Static或Sealed的,因为Static或是Sealed声明的类是不能被继承的,而将类声明为抽象类就是为了被继承,这里存在针尖对麦芒似的矛

盾。

    Static 可以用来声明所有的成员,包括类、构造函数、方法以及成员变量等,当Static用于类时,该类中的成员必须全为静态的,而且该类是不能被继承的(有点

sealed的效果);当Static用于构造函数时,这时可以在此构造函数之内对成员变量进行初始化,而且此时的构造函数只执行一次!;当Static用于方法时,由于Static

声明的方法不能被标记为Virtual,override,abstract,所以被Static标记的方法不能被重写;当Static用于成员变量时,该变量就必须出现在静态的方法中。

  以上是我对抽象和静态的一点理解,如有不正确的地方,欢迎各位高手批评指正,谢谢!

  

  

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3