喜欢程序的朋友们,大家应该都听过一句话“万物皆对象”,感觉老牛x了。
面向对象的程序设计,它是围绕真实世界来设计程序的。
面向对象三要素:封装、继承、多态。
我们可以定义一个类,用来表示小轿车,并且定义小轿车的一些属性跟行为。然而现实中,有很多种类的车,有公交车、货车、出租车等。难道每次都要定义相对应的类吗?这样的话,太麻烦了,我们可以将这些进行一次抽象,这些车是不是都属于车的范畴内。既然这样的话,有很多属性跟行为是大家都有的,只是具体不同罢了,那我们便定义一个抽象类(vehicle),让公交车、货车、出租车来继承这个类,之后只需重写其中的方法,或者修改对应的属性即可。以上工作做好了之后,便可以将公交车、货车、出租车来实例化一下(也就是new操作),只有实例化后,才能称得上一个对象。由此,万物皆对象便自然而然理解了吧。
(没有女朋友的话,咱new一个,嘿嘿嘿)
缓解眼疲劳
面向对象语言主要有两种:一、强类型的(c#、java等) 二、弱类型的(javascript)。
1、首先用强类型的c#语言来具体介绍一下面向对象。(java个人不是太了解的。。。)
代码如下:
封装
//定义一个抽象类 vehicle 将一些属性跟行为封装在这个类里供后面的类继承 abstract class vehicle() { public string myname;//这个是字段,不是属性 //属性 public string appearance { get; set; } = "red"; //外观颜色,默认是红色,而且该属性可读可写 public string weight { get; set; } = "1.8t" //车身重量 public string brand { get; set; } //品牌 //行为(方法) public virtual void run() //使用virtual关键字以供继承它的类重写该方法 { //启动 } public virtual void stop() { //停车 } }
继承
class car : vehicle()//小轿车继承vehicle这个类 { //属性重新赋值---构造函数(用来构造对象的,顺便设置本类的部分属性值) public car() { this.appearance = "小轿车外观"; this.weight = "1.5t"; } //行为(方法) 重写vehicle里面的run方法 public override void run() { //小轿车启动 } public override void stop() { //小轿车停车 } } class bus : vehicle() { //属性 public bus() { this.appearance = "公交车外观"; this.weight = "2t"; } //行为(方法) public override void run() { //公交车启动 } public override void stop() { //公交车停车 } }
多态
class static void main()//程序入口 { car car = new car();//实例化一个对象 car.brand = "劳斯莱斯";//重新设置属性的值 car.run();//启动小轿车 bus bus = new bus(); bus.run();//启动公交车 //小轿车和公交车调用了同一个run方法,却产生了不同的效果; 这便是多态,不同的对象调用调用同一个方法,产生了不同的行为。也是面向对象程序设计的魅力所在 }
2、接下来使用弱类型javascript语言来介绍一下面向对象。
代码如下:
//最简单的方式 var vehicle={ appearance:"", weight:"", brand:"", run:function(){}, stop:function(){} } //js语言也可以设置某个属性是可读还是可写,只不过稍微有些复杂 如下: objec.defineproperty(vehicle,"appearance",{ writable: false//不可写,意思就是不能修改该属性的值 })
//组合使用构造函数模式跟原型模式---这里可能有些复杂,具体原型在之后的博客中详细介绍 function vehicle(appearance,weight,brand) { this.appearance=appearance; this.weight=weight; this.brand=brand; } vehicle.prototype={ constructor:vehicle, run:function(){}, stop:function(){} }
看到这里,解释下强类型跟弱类型的区别:
强类型:指的是具体的值的类型是一定的,定义int型变量,需要用到int关键字;定义string型变量,需要用到string关键字;现在c#也支持使用var关键字来定义变量,但定义的时候,必须要赋值。原理其实就是根据赋的值来推测出这个变量是什么类型的,也就是说根据赋的值来推测出这个var指的是int还是string。
弱类型:在javascript中,定义变量都是用的var关键字,不管什么类型的变量都可以使用var来定义。
缓解眼疲劳2
顺带说下, c#(java)也属于服务端语言的行列,而javascript属于客户端语言。
什么意思?
就是c#是运行在服务器上的,javascript运行在客户端上。我们平常浏览的网页其中的javascript语言就是运行在浏览器上的,我们可以通过浏览器直接看javascript代码,而服务端语言我们是看不到的。
如对本文有疑问, 点击进行留言回复!!
Java面向对象中:方法重载和方法重写以及区别、 this关键字和super关键字以及区别
【开源】使用Angular9和TypeScript开发RPG游戏(补充了Buffer技能)
网友评论