关于 类,我有一些话想说

说到类那就说到了面向对象的灵魂了,没有它也就没有了封装、继承and多态这些东西了。我还记得在读研期间每次看到这些都望而却步,甚至我搞不懂对象和类的区别(这里防止有人也不知道区别是什么我借用书上的描述写一下:类是模板,对象是类的实例化。万万不可把类与对象画等号,通俗点来说是类是实例化之前,对象是实例化之后)。学生阶段写的代码很没有规则没有任何设计模式,唯一的要求就是可以跑。
哈哈哈哈哈,代码能跑只是第一步,能跑和跑的快差了十万八千里,跑的快和跑的姿势优美又差了十万八千里。可以说是学生阶段一直都没有搞明白搞清楚这些东西,首先是自己懒得学,能写出来一点东西就不想再多花点时间多去学习了,其次无论大学还是研究生阶段老师们都只专注于学术或者项目,很少真的会让学生去深究代码应该怎么写,要求就是能跑。当然最大的问题还是在我自己,工作后真的开始敲代码了才知道,自己的代码能力是这么的有限。越学越觉得需要学习以及需要知道的东西才越多,当然开始在CSDN上写博客也是希望更多的人一起学习。闲言少叙,直接开始吧。

一、类的修饰符

类的修饰符有很多种哦,对于一个class来说它可以被public private abstract 等等乱七八糟的东西所修饰,我在csdn上随便找了一个人的文章可以看看关于修饰符的连接

二、封装、继承、多态

1.封装

曾经我很不理解为什么叫封装,其实就是一种高大上的叫法罢了,本质论中提到的更好——组合。比如:我是小阿Giao,那我的的名字、年龄、职业、学历等等组合在一起,这就叫“封装”。
当然还是得规范一点,封装就是对字段 属性 方法这些进行必要的隐藏,不能让客户端随意的对数据进行篡改。关于封装这些都是很好理解的,我不想多做解释。

2.继承

对于新手来说,可能到了继承这里就出现问题了(我自己是这样的哈哈)。那么继承具体是一种什么东西呢?举个例子:人有两个手,左手和右手,左手和右手都继承了手这个抽象的父类。抽象的父类顾名思义就是这个被继承的类很抽象很模糊(真是听君一席话,如听一席话),它抽象到可以代表一切子类。举个例子:抽象类:人;具体类:中国人;这里“人”相对“中国人”来说就是抽象的父类。
之所以用抽象类“手”做为例子是因为根据依赖倒转原则所有的类最终都应该继承一个抽象类或者接口

    public abstract class Hand{string name;}public class RightHand:Hand{}public class LeftHand : Hand{}

接下来再实例化(以右手为例):

   static void Main(string[] args){RightHand rightHand = new RightHand();rightHand.Name = "右手";}

可以看出来右手的类里面本没有Name这个属性,但是父类的手里面有所以它也有。接下来再看看怎么继承一个接口。接口的关键字是interface,举个例子:

    interface Icarry{ }public abstract class Hand{public string Name { get; set; } }public class RightHand : Hand,Icarry{    }public class LeftHand : Hand, Icarry{}

一个类只能有一个父亲,但是可以有很多接口,目前这个接口没写东西,在下面的多态进行解释。

3.多态

有的时候不得不感慨中国的语言真的博大精深,言简意赅。“多态”又是一个高大上的名字,又是一个及其迷惑人的词汇,其实它根本不难,将介绍三种方法以左右手的方式实现多态。

  • 首先是V-O实现
    这里的V代表virtual,O代表Override,直接看代码
 interface Icarry{ }public abstract class Hand{public string Name { get; set; }public virtual void VO(){Console.WriteLine(this.Name);}}public class RightHand : Hand,Icarry{public override void VO(){Console.WriteLine("我是右手啦啦啦");}}

客户端代码:

  static void Main(string[] args){RightHand rightHand = new RightHand();rightHand.Name = "右手";rightHand.VO();Console.ReadKey();}

结果:
在RightHand中使用Override对父类中对Virtual修饰的方法进行重写。可以把本来的方法变个样子。

  • 其次是抽象方法实现
    使用这个方法需要注意一点,就是抽象方法必须必须必须在抽象类里面,而且子类必须要实现此方法,不然就会出现这个错误:

    ok,使用alt+enter实现抽象类方法以后,上代码:
  public abstract class Hand{public string Name { get; set; }public abstract void Abstract();}public class RightHand : Hand,Icarry{public override void Abstract(){Console.WriteLine("我是抽象方法实现的右手");}}

客户端实现跟第一点VO一样,结果是这样:

  • 最后是接口
    还记得上面介绍继承的时候空着的接口吗?接口是个特别好玩的东西,他相当于一个道具,可以赋予继承的类一些功能。
    比如,我可以给右手射击的一项技能,左手变成飞机的一个技能,代码如下:
  interface Icarry{void Doit();//接口中的方法}public abstract class Hand{public string Name { get; set; }}public class RightHand : Hand,Icarry{public void Doit(){Console.WriteLine("我可以射击!");}}public class LeftHand : Hand, Icarry{public void Doit(){Console.WriteLine("我可以变成飞机!");}}

客户端代码:

  static void Main(string[] args){RightHand rightHand = new RightHand();rightHand.Name = "右手";rightHand.Doit();LeftHand leftHand = new LeftHand();leftHand.Name = "左手";leftHand.Doit();Console.ReadKey();}

结果:

值得注意的是接口中的方法必须要在子类中实现,不然左右手的功能可就不全了哦。

总结

以上的继承封装多态,以左右手为例的代码,是我自己学习过程中理解,如果有不对的可以一起交流。对于小白来说绝对通俗易懂。当然对于类中还有构造函数、析构函数、密封的类诸多知识点,在以后的博客中可能会继续介绍。在面向对象编程中,这些都是想通的,无论是java还是c#还是别的都是必须要学习的东西,学会了这些才算是真正的入门了。

本质论之封装继承和多态的介绍相关推荐

  1. Java回顾 封装 继承和多态

    封装 什么是封装 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装时的权限控制符区别如下: 封装的意义 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象 ...

  2. java 继承重写_java 封装 继承 重写 多态

    封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: 将变化隔离.便于使用.提高重用性.提高安全性 封装原则: 将不需要对外提供的内容都隐藏起来.把属性都隐藏,提供公共方法对其访问. ...

  3. 面向对象 详解笔记 方法 类 对象 封装 继承 重写 多态 接口

    文章目录 面向过程&面向对象 面向过程 面向对象 什么是面向对象 回顾方法及加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环和return的区别 方法名:注意规范就o ...

  4. 黑马程序员_JAVA之面向对象(封装,继承和多态)

    ------- android培训.java培训.期待与您交流!---------- 面向对象 一.面向对象概述 定义: 面向对象(Object Oriented,OO)是软件开过过程中使用一种思维方 ...

  5. java 封装 继承和多态

    2019独角兽企业重金招聘Python工程师标准>>> 多态无处不在.引用的概念最为困难.理解了引用才能理解多态的意义以及应用. 多态的应用的一大前提是继承.以及继承中的重写方法.继 ...

  6. python类与对象 封装继承与多态 0308

    类与对象 初始化方法 init方法 带参实例化类 del方法 str方法 私有 继承 方法的重写 super 父类名称调父类方法 调用父类私有 间接调用 多继承 新式类经曲类 多态 类属性 类方法 静 ...

  7. Objective--C三大特性:封装,继承,多态(零碎笔记)

    OC中类的特性共有有三个,它们分别是封装.继承和多态. 封装:封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能. OC中有四种访问权限修饰符:@public.@prote ...

  8. Java三大特性:封装,继承与多态

    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/84592274冷血之心的博客) 目录 (一)封装 封装的定义 封装 ...

  9. 07 面向对象编程-结构、封装、继承、多态、接口

    文章目录 Struct定义 struct 方法 工厂模式 面向对象三大特性 封装 继承 接口 多态 Golang支持面向对象编程,但是和传统面向对象有区别,并不是纯粹面向对象的语言,只能说Golang ...

最新文章

  1. seo说_百度指数看世间沉浮_如何快速排名-互点快速排名_网站seo优化排名,网络推广的优化服务...
  2. 深入理解javascript原型和闭包(1)——一切都是对象
  3. 51 Nod 1007 正整数分组【类01背包】
  4. python常用语法和示例_C语言切换案例教程,语法,示例和规则
  5. php对角线数组代码,php数组内容查找代码
  6. Java每日问题汇总-02
  7. Eclipse调字体
  8. python工资一般多少西安-在西安为什么对Python编程需求这么大?工资这么高?
  9. Windows移动开发(五)——初始XAML
  10. Cron表达式 定时执行说明
  11. 佳能g2810打印机扫描怎么用_佳能 G2810说明书.pdf
  12. golang怎么判断字符串是否为空
  13. 深度学习-深度卷积神经网络发展
  14. win10非核心版本的计算机上
  15. 在不确定的世界里,确定的当个程序员
  16. tomcat图标修改——东子破解
  17. python之re模块collections模块
  18. HTML语言中img标签的alt属性和title属性的作用与区别
  19. 使用httpModule做权限系统
  20. 方正集团将打造四大板块

热门文章

  1. python换衣服_GAN入门:5分钟学会行人换衣生成
  2. 学习 Python 之 Pygame 开发坦克大战(四)
  3. java 检查 mac 地址_使用Java在本地计算机上获取MAC地址
  4. Orcal 64位 配置plSQL 32 位
  5. Unity实现虚拟摇杆
  6. 如何安装迅雷套件实现远程下载
  7. Nginx源码包安装详解
  8. PDF Explained(翻译)第三章 文件结构
  9. Modbus tcp协议学习总结
  10. 用go 语言 实现一个密码生成工具