对面向对象的理解

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

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

      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();
        }
    }
}
 

 

转载于:https://www.cnblogs.com/dongqian/p/4849869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值