(C#、JavaScript)面向对象的程序设计
面向对象(OOP)的理解
喜欢程序的朋友们,大家应该都听过一句话“万物皆对象”,感觉老牛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代码,而服务端语言我们是看不到的。
(C#、JavaScript)面向对象的程序设计的更多相关文章
- JavaScript 面向对象的程序设计(一)之理解对象属性
首先,JavaScript 面向对象的程序设计,主要分三部分. 理解对象属性: 理解并创建对象: 理解继承. 本文主要从第一方面来阐述: 理解对象属性 首先我们来理解Javascript对象是什么?在 ...
- 重学js之JavaScript 面向对象的程序设计(创建对象)
注意: 本文章为 <重学js之JavaScript高级程序设计>系列第五章[JavaScript引用类型]. 关于<重学js之JavaScript高级程序设计>是重新回顾js基 ...
- JavaScript 面向对象的程序设计
面向对象(Object-oriented,OO)的语言有一个标志,那就是它们都有类的概念.而通过类可以创建任意多个具有相同属性和方法的对象.前面提到过,ECMAScript中没有类的概念,因此它的对象 ...
- JavaScript面向对象的程序设计
ECMAScript支持面对对象(oo)编程,但不使用类或接口.对象可以在代码执行过程中创建和增强,因此具有动态性而非严格定义的实体.在没有类的情况下,可以此采用下列模式创建对象. 工厂模式,使用简单 ...
- Learn JavaScript(面向对象的程序设计01)
最新更新请访问: http://denghejun.github.io JavaScript与OOP JavaScript作为web前端一种重要的脚本技术,已被大多开发人员所熟知.compare ...
- javascript面向对象的程序设计之Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptor()用于获取给定属性的描述信息,这个描述信息是一个对象. 如果是访问器属性,则这个对象的属性有configurable,enumerabl ...
- JavaScript面向对象程序设计:数组
或许你会奇怪,面向对象的程序设计为什么从数组开始讲起?这是因为……其间的种种关系吧……嘿嘿,这里先卖个关子,先来看看我们熟悉的数组在JavaScript里面是什么样子的. 1. 创建数组 在J ...
- JavaScript 面向对象程序设计(下)——继承与多态 【转】
JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论 ...
- JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承
相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...
随机推荐
- php判断二个数最大公约数
$m = isset($_GET['m']) ? $_GET['m'] : 12; $n = isset($_GET['n']) ? $_GET['n'] : 8; //判断mn的大小 if($m&g ...
- 19.10.11学习日记随笔 mysql事务隔离性
一天的感悟 学习事务的处理方式,其中反想自己学过的flask 默认是开启事务的,flask_sqlalchemy每次在提交时都是需要commit,或者失败是需要rollback回滚操作的,其实pyth ...
- AspNetCore源码解析_1_CORS中间件
概述 什么是跨域 在前后端分离开发方式中,跨域是我们经常会遇到的问题.所谓的跨域,就是处于安全考虑,A域名向B域名发出Ajax请求,浏览器会拒绝,抛出类似下图的错误. JSONP JSONP不是标准跨 ...
- touch事件中的touches、targetTouches和changedTouches
touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前(引发)事件的触摸点的列表; 通过一个例子来区分一下 ...
- VS2008文件编码格式修改
windows下建议使用utf8的编码,vs默认的不是utf8格式,这时需要修改项目文件的模板,在C:\Program Files\Microsoft Visual Studio 9.0\VC\vcp ...
- vscode回车补全代码
VsCode设置回车补全代码而不换行 有一部分人不习惯用tab键补全代码,我就是其中之一,习惯了回车补全的我决定设置一波,网上找了很多, 没找到比较详细的,所以自己写一个 有一个叫keybinding ...
- android studio 添加GSON
- 记一次有趣的thinkphp代码执行
0x00 前言 朋友之前给了个站,拿了很久终于拿下,简单记录一下. 0x01 基础信息 漏洞点:tp 5 method 代码执行,payload如下 POST /?s=captcha _method= ...
- [STL] Codeforces 69E Subsegments
Subsegments time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
- C#获取设备话筒主峰值(实时音频输出分贝量)
1.引用类库NAudio,Git地址 https://github.com/naudio/NAudio 2.添加如下代码和引用: public float GetVoicePeakValue() { ...