zoukankan      html  css  js  c++  java
  • (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代码,而服务端语言我们是看不到的。

  • 相关阅读:
    POJ2054 Color a Tree
    洛谷【P1080】国王游戏
    BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜
    BZOJ5281:[Usaco2018 Open]Talent Show
    浅谈二分
    BZOJ1720:[Usaco2006 Jan]Corral the Cows 奶牛围栏
    POJ2018 Best Cow Fences
    洛谷【P2115】[USACO14MAR]破坏Sabotage
    BZOJ 4244 邮戳拉力赛 (DP)
    UOJ #277 BZOJ 4739 [清华集训2016]定向越野 (计算几何、最短路)
  • 原文地址:https://www.cnblogs.com/ywjbokeyuan/p/12639451.html
Copyright © 2011-2022 走看看