文章类型: .NET
关键词: 面向对象编程,OOP,重要概念
内容摘要:

面向对象编程的重要概念

2015/7/29 10:13:46    来源:apple    阅读:

继承

1、继承要符合is-a的关系。即"子类is a 父类"——子类是父类。如:卡车是汽车,卡车is a 汽车。

2、父类中如果用Protected修饰符,表示只允许其子类访问,而不允许其他非子类访问:

    父类中如果用private修饰符,子类是不能访问的。

3、除了构造方法(析构函数)不能被子类继承外,其他都可以直接被继承。可以用base关键字调用父类的构造函数:语法如下

     base(参数变量名)

     使用base还可以调用父类的属性和方法。

     注意:子类构造函数中已经定义了这些参数,在base()中只需指定变量名即可,

              这个变量名必须与父类中的构造函数中的一致

4、继承的特征:

     A 继承的传递性

     B 继承的单根性 表示一个子类只能继承一个父类。

     C 密封类 它修饰的类是不能被继承的。用关键字sealed

5、子类构造函数应注意:

     A 隐式调用父类构造函数

        如果子类的构造函数没有使用base关键字指明调用父类的哪个构造函数,则父类必须提供一个默认的无参构造函数。

     B、显示调用父类构造函数

         如果父类中没有提供默认的无参构造函数,那么子类的构造函数必须明确指明调用的是哪个父类的有参构造函数。

      C、子类的无参构造函数调用父类的有参数构造函数时,要给参数赋值。

6、继承的作用:

     A 实现了代码的重用

     B 继承使得程序结构清晰

 

面向对象的多态性

多态是指两个或多个属于不同类的对象,对于同一个消息(方法调用)作出不同响应的方式。实现多态的方式:

一、抽象类和抽象方法

    1 抽象类的语法:

                         访问修饰符 abstrac class 类名

    2 父类中的方法:

                         访问修饰符 abstrac 返回类型 方法();

注意:含有抽象方法的类必然是抽象类。抽象类中的方法并不一定都是抽象方法。

         抽象类是不能被实例化的。只能通过它的子类来实现该类的方法,除非它的子类也是一个抽象类。

         抽象类不能是密封或者静态的,抽象类被子类继承并实现它的抽象方法。

    3、重写抽象方法:

                          访问修饰符 override 返回类型 方法()

     4、使用场合:

                       A 父类提供了一个功能或者规定,约束子类的行为。

 示例:

 

abstract public class Person

{

    abstract public void SayHi();

}

 

//子类

public class Student : Person

{

    public override void SayHi()

    {

        //代码省略

    }

}

 

public class Teacher : Person

{

    public override void SayHi()

    {

        //代码省略

    }

}

里氏替换原则

     "is"操作符用于检查对象是否与给定的类型相同。如: ifobj is string{}

     "as"用于两个对象之间的类型转换。如:string as obj;

注意:as运算符当转换失败时,运算符将产生空,而不是引发异常。

        is转换失败要发生异常。

二、虚方法:

       访问修饰符 virtual 返回类型 方法()

       {

               //方法体

        }

 1、每个对象Object都有一个Equals()方法,用于确定两个实例对象是否相等,它是一个虚方法,可以重写这个方法。

      public virtual bool Equals(Object obj)

      默认情况下,Equals()方法只支持引用相等,也就是相比较的两个对象是否引用同一个对象。

      重写Equals()虚方法如:

Code
public override bool Equals(object obj)

{   //将要比较的对象转换为当前类型

    Student target = obj as Student;

 

    //如果为空、类型不同

    if (target == null)

       return false;

 

    if (target.name == this.name &&

        target.gender == this.gender &&

        target.age == this.age &&

        target.hobby == this.hobby &&

        target.popularity == this.popularity)

    {

        return true;

    }

 

    return false;

}

2、虚方法和抽象方法的区别:

  A、修饰的关键字不同

  B、父类中方法体的区别

  C、重写的区别(抽象方法必须override

  D、抽象方法只能在抽象类中,而虚方法除了密封类外都可以写

3、方法重写的条件:

     A、方法签名必须一样

     B、访问修饰符允许被放大

     C、返回类型必须一样   

总结:面向对象的三大特征

        封装:保证对象自身数据的完整性、安全性

        继承:建立类之间的关系,实现代码复用、方便系统的扩展

        多态:相同的方法调用可实现不同的实现方式

三、方法重载

      1、与重写方法的区别

           A、应用场合不同:如果父类中有abstract/virtual,才能被重写,重写方法要求类与类之间是继承关系。

 而重载没有过多的要求。

      2、必须在同一个类中

      3、方法名相同,参数项不同(参数个数不同或者参数的数据类型的不同),与方法的返回类型无关。

四、方法隐藏:父类和子类的方法都存在。子类中的方法前面加上new进行声明表明隐藏父类方法

五、静态(satice)类/密封(sealed)类/抽象(abstract)类它们各自的特点。

↑ 上一篇文章:C#中的装箱和拆箱操作 关键词:C#,装箱,拆箱,操作 发布日期:2015/7/29 10:12:34
↓ 下一篇文章:C#基础知识 面向对象编程---继承 关键词:C#,基础知识,面向对象编程,OOP,继承 发布日期:2015/7/29 10:14:40
相关文章:
C#基础知识 面向对象编程---继承 关键词:C#,基础知识,面向对象编程,OOP,继承 发布日期:2015-07-29 10:14
C#基础知识 面向对象编程:多态性 关键词:​C#,基础知识,面向对象编程,多态性 发布日期:2015-07-29 10:15
深入.NET平台和C#编程 关键词:ACCP中级,S2,.NET,C#,OOP,编程,课程,总结,PPT 发布日期:2015-07-29 12:41
相关目录:.NET软件开发ANDROID
我要评论
正在加载评论信息......