首页 > 其他 > 详细

对面向对象的理解

时间:2015-09-30 19:31:25      阅读:185      评论:0      收藏:0      [点我收藏+]

一、什么是面对对象:面对对象是一个具体的东西,比如水杯,当你拿到这个水杯的时候就可以说水杯是一个对象,水杯本身并不是对象,只是一个类型而已。

二、面向对象的三大特征:

      A:封装性:就是打包

           好处:易于代码的管理和代码的复用

      B:继承性

          构造方法:每个类中都有一个无参构造方法,当我们自己自定义了一个有参构造方法时,系统将不再提供无参构造方法初始化数据,需要我们自己在写无参构造方法

          用法:使用 base()由于调用父类方法;子类构造方法调用父类构造方法需要先写个子类构造方法,后面跟 :base(),如果父类构造方法有参数,将需要自己在父类中再写一                   个构造方法,因为使用base()系统会默认调用父类的构造方法

          构造方法执行顺序:从object类开始一直从上往下调用:初始化数据

          里氏转换原则:1:子类对象可以赋值给父类对象

                              2:父类对象可以强制转换为对应的子类对象(子类对象必须继承父类)

          isas :类型转换

          is 用法 变量名 is 类型 //返回一个bool值

          as用法 变量名 as 类型 //如果该变量可以转换为此类型,则直接可以赋值,否则赋值为空

      C:多态性

           原则:父类统一调用:子类具体实现

                   隐藏看类型,重写只管新

           父类实现多态:使用 virtual 修饰符对方法进行修饰,变成虚方法,然后子类方法加 override 可以对他进行重写,也可以不重写父类方法

           抽象类实现多态:在方法中加上abstract 注意:方法中加了abstract 后,类名前必须加 abstract 修饰符;

                                 变成抽象方法后:方法就不用实现了:publec abstract void life();

                                  

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace _07_抽象类实现多态
 8 {
 9     abstract class A 
10     {
11         public abstract void life();
12     }
13 
14     class B : A 
15     {
16         public override void life()
17         {
18             Console.WriteLine("重写抽象方法");
19         }
20     }
21 
22     class Program
23     {
24         static void Main(string[] args)
25         {
26             B j = new B();
27             j.life();
28         }
29     }
30 }

 

           接口实现多态:在把Class 改成 interface :接口中 方法写法:void life(); Shift +Alt + F10

                               如果一个类继承两个接口,且两个接口中都有同一个方法:使用显示接口 Shift +Alt + F10

                               调用的时候先把子类赋值给接口对象,然后在用接口对象进行调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _06_显示接口
{
    interface IIntface 
    {
        void a();
    }
    interface II 
    {
        void a();
    }
    class B:IIntface,II 
    {
        void IIntface.a()
        {
            Console.WriteLine("IInterface接口");
        }

        void II.a()
        {
            Console.WriteLine("II接口");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IIntface t1 = new B();
            t1.a();
            II t2 = new B();
            t2.a();
        }
    }
}
 

 

对面向对象的理解

原文:http://www.cnblogs.com/dongqian/p/4849869.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!