博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《大话设计模式》学习心得系列(二)
阅读量:5937 次
发布时间:2019-06-19

本文共 2729 字,大约阅读时间需要 9 分钟。

面向对象基础(2)

本博文意在巩固基础知识,高手请绕过。

面向对象的三大特征:封装、继承、多态

什么是封装?

   每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。这样方法和属性包含在类中,通过类的实例来实现。

   类将数据和操作数据的方法结合成一个单位。在设计类时,不希望直接存取类中的数据,而是希望通过方法来存取数据。如此就可以达到封装数据的目的,方便以后维护、升级,也可以在操作数据时多一层判断,提高安全性。

    使用封装可以将数据隐藏起来,形成一个封闭空间。在编写程序时,对类的成员使用不同的访问修饰符,从而定义它们的访问级别。

  封装的优点:

    1.减少耦合;

    2.类内部的实现可以自由的修改;

    3.类具有清晰的对外接口。

什么是继承?

  对象的继承代表了一种“is-a”的关系,如果两个对象A和B,可以描述为“B是A”,则表明B可以继承A。     

  C#中提供了类的继承机制,只支持单继承,不能同时继承多个类。被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。       

  一个类从另一个类派生出来时,派生类继承了基类的特性。除了构造函数和析构函数外,派生类隐式地继承了直接基类的所有成员。子类可以从基类中继承的成员有方法、域、属性、事件、索引指示器。构造函数虽然不能被继承的,但是子类依然可以使用base关键字进行调用。    

  子类除了从基类继承的属性和功能外,还可以有属于自己的特性。子类还可以通过方法重写的方式来实现父类的功能。

1 class Apple    //基类Apple 2 { 3   public void  Applenum() 4   { 5     Console.WriteLine("苹果!"); 6   } 7 } 8 class BigApple:Apple   //BigApple类继承于Apple 9 {10   public new  void  Applenum()  //使用new重写方法11   {12     Console.WriteLine("大苹果!");13   }14 }15  static void Main(string[] args)16  {    17      Apple apple=new Apple();  //创建Apple实例18      apple.Applenum();19      BigApple bigApple=new BigApple();   //创建BigApple实例20      bigApple.Applenum();  21      Console.ReadKey();22   }
View Code

什么是多态?

  多态就是不同的类的实例,执行同一操作,最后产生不同的执行结果。就像两个苹果,虽然都属于苹果类,但有大小和形状不同,大小和形状都属于苹果的属性,这样就产生了多态性。
  多态性分为编译时多态和运行时多态。
  编译时的多态性是通过重载来实现的。方法重载是指一个方法名称具有多个数量或类型的参数的函数,传递的参数也不同,实现不同的功能。
  运行时的多态性是指程序运行过程中,根据实际情况来实现不同操作。在C#中,运行时的多态性通过虚成员实现。
  积累中需要重写的函数使用关键字virtual定义,该关键字放在返回类型前面。而派生类如果要重写虚函数,则要使用关键字override,该关键字放在返回类型前面。

  例如:

    通过重载实现编译时多态

1 class Apple 2 { 3   private int applenum; 4   private string sapple; 5   public void Applenum() 6   { 7   Console.WriteLine("一共有几个苹果呀?"); 8   } 9   public void  Applenum(int applenum)10   {11     Console.WriteLine("一共有{0}个苹果!",applenum);12   }13   public void Applenum(int applenum,string sapple)14   {15     Console.WriteLine("一共有{0}个苹果!{1}",applenum,sapple);16   }17 }18 19  static void Main(string[] args)20  {21      int applenum = 5;22      string sapple = "你是我的小苹果!";23      Apple apple=new Apple();24      apple.Applenum(applenum, sapple);25      apple.Applenum(applenum);26      apple.Applenum();27      Console.ReadKey();28   }
View Code

  例如:

    通过重写实现编译时多态

1 class Apple     2 { 3   public virtual void  Applenum()   //创建虚方法 4   { 5     Console.WriteLine("苹果!"); 6   } 7 } 8 class BigApple:Apple   //BigApple类继承于Apple 9 {10   public override  void  Applenum()  //使用override重写方法11   {12     Console.WriteLine("大苹果!");13   }14 }15  static void Main(string[] args)16  {    17      Apple apple=new Apple();  //创建Apple实例18      apple.Applenum();19      BigApple bigApple=new BigApple();   //创建BigApple实例20      bigApple.Applenum();  21      Console.ReadKey();22   }
View Code

 

转载于:https://www.cnblogs.com/spilledlight/p/4963067.html

你可能感兴趣的文章
What does corn harvester involve?
查看>>
阿里云服务器ECS开放8080端口
查看>>
前端常用排序详解
查看>>
Spring中实现监听的方法
查看>>
使用Tooltip会出现一个问题,如果行上出现复选框
查看>>
11.03T1 DP
查看>>
P2924 [USACO08DEC]大栅栏Largest Fence
查看>>
jQuery操作table tr td
查看>>
工作总结:MFC自写排序算法(升序)
查看>>
螺旋队列问题之二
查看>>
扩展运算符和解构赋值的理解
查看>>
焦点不在input或textarea中,屏蔽回格按钮
查看>>
后缀数组(suffix array)详解
查看>>
EF 通过DataAnnotations配置属性和类型
查看>>
C#多线程学习一
查看>>
删除数组中的空元素
查看>>
spring学习笔记
查看>>
Git使用技巧(3)-- 远程操作
查看>>
请问ECSHOP首页站内快讯在哪里添加和修改?
查看>>
人工智能----TensorFlow开篇简介
查看>>