在互联网时代的今天,人工智能和大数据云计算的到来,我们可以看到,计算机的世界越来越趋近人类世界。

从编程语言上说,也是同样越来越趋近人类语言,从开始的机器语言,到后来的汇编语言,到高级语言与低级语言分界的C语言,直到现在的面向对象语言。

    机器语言,从名称上就可以看出,机器语言是计算机能够直接识别的,我们都知道计算机是二进制的,只能识别01。那么问题就来了,用机器语言编写程序,那基本不是学计算机的,而是电子的,因此,机器语言真是专业中的专业,也许只能那些技术大咖能畅游在机器世界,对于我们这种普通人,只可远观而已。

由此,汇编语言的产生,用标签代表命令,将极大简化学习难度,这个时候应该就是我们计算机专业人士的的春天开始到来。

    而c语言的产生,已经基本贴近人类语言了,当然,是欧美国家的语言,与看这篇博文的你,基本没啥关系,因为看这篇博文的基本都是中国人。但是无论中国美国,至少c语言在理解上,都简单了太多。但是,这个时候由于硬件发展并不迅速,因此,基本只是写一些小程序或者写一些算法,比如算法,这个明显与逻辑能力更贴近,因此,c语言也更注重逻辑的表达,也就是我们平时做事,第一步做什么,下一步做什么。。。。这种顺序逻辑,非常符合人类做事,但是我们也可以看到,这个基本是一件事一件事的来描述这个世界,因此,c语言也叫结构化过程化的语言,强调算法或者说软件的运行过程。

    随着硬件的发展,大型程序的到来,现在的程序不能只用程序来表达,而系统这个词可能更贴近。这个时候,面向对象的思想就出来了。所谓的对象我们可以理解为我们所看到所有的一切,人,猫,狗,桌子,电脑,手机等等所有的一切。都是对象,以前是过程流,比如数学考试的时候,做题,c语言就会第一步,第二步的描述做题的步骤,但是面向对象是消息流+对象。给一道题,人做题,做完把答案给你。

    而在这其中,人具体怎么做,并不强调,这样从上图可以看到题目,人,答案,这些名词。每个名词都是对象,“把题目给人”,“人做完给出答案”这就是消息流,也就是输入与输出。

 

    当然,面向对象并不是说没有过程化的东西,比如上图,把题目给了人之后,人怎么实现,还是需要程序员按照过程化的实现,但是在整体结构上,我们并不去强调过程,而是强调对象之间的配合,由部分组成整体,实现系统。

 

    面向对象中“类”这个字,在我们生活中常见,比如人类,分类等等。而面向对象中,类与对象的区别,有时候让人一头雾水。下面我将介绍,类与对象的区别:

 

    类与对象的区别很简单:类是抽象的描述,对象是实际存在的。比如,人类,就是很抽象,只能形容人类有什么共同点,比如,姓名,性别,年龄,住址,但是并不具体,但是具体到某一个人,比如张三,男,23岁,广州等,前面对人类共同的描述就是类,张三就是这个类的一个实例,也就是对象了。下面我将举例说明:类要记住一个词叫:“分类”  如下:

 

手机分为智能手机和非智能手机,智能手机有三星,苹果,华为。非智能手机有oppo,nokia

由此,可以看出它们的关系为:

代码示例:/** *@author LeiGao24 *@data 2016.11.15 *  手机--phone *  智能手机---zhiNeng *  非智能手机 -- feiZhiNeng */class phone{	}class zhiNeng extends phone{	}class feiZhiNeng extends phone{	}//指定程序运行的入口Main函数,也就是从哪里开始执行程序//由于java是全部面向对象的,也就是说java所有的语句都必须在类中。//因此要声明一个类,然后将Main函数放到类中。class Main{	public static void Main(String[] args){		//生成对象		zhiNeng sanxing=new zhiNeng();		zhiNeng apple=new zhiNeng();		zhiNeng huawei=new zhiNeng();				feiZhiNeng oppo = new feiZhiNeng();		feiZhiNeng nokia = new feiZhiNeng();	}}

通过以上代码可以很好的将上副图描述出来。

    从上面应该可以理解类与对象了。那么问题来了,我们平时是怎么描述一个物体的呢?

通常从两个方面,一个是它的属性,另一个就是它的功能。

    例如,接着上例,手机属性:品牌,尺寸,手机功能:打电话,发短信

    

由此,我们就可以扩展代码如下:

    

/***@author LeiGao24*@data 2016.11.15*  手机--phone*  智能手机---zhiNeng*  非智能手机 -- feiZhiNeng*/class phone{	String brand;	String size;		public void call(){		System.out.println("phone call ...");	}		public void mesaage(){		System.out.println("phone message");	}}class zhiNeng extends phone{	//由于智能手机是手机的一个子类,也就是孩子,	//所以,智能手机也包含品牌,尺寸,打电话,发短信	//但是,打电话和发短信每个手机实现的方式是不同的,	//因此,要把打电话和发短信两个方法重新写一下		public void call(){		System.out.println("智能打电话....此手机品牌是"+			this.brand+",此手机的大小:"+this.size);	}	public void mesaage(){		System.out.println("智能发短信....此手机品牌是"+			this.brand+",此手机的大小:"+this.size);	}}class feiZhiNeng extends phone{	public void call(){		System.out.println("非智能打电话....此手机品牌是"+			this.brand+",此手机的大小:"+this.size);	}	public void mesaage(){		System.out.println("非智能发短信....此手机品牌是"+			this.brand+",此手机的大小:"+this.size);	}}//指定程序运行的入口Main函数,也就是从哪里开始执行程序//由于java是全部面向对象的,也就是说java所有的语句都必须在类中。//因此要声明一个类,然后将Main函数放到类中。class Main{	 public static void main(String[] args){		//生成对象		zhiNeng sanxing=new zhiNeng();			sanxing.brand="三星";			sanxing.size="5寸";			sanxing.call();			sanxing.mesaage();		zhiNeng apple=new zhiNeng();			apple.brand="苹果";			apple.size="4寸";			apple.call();			apple.mesaage();		zhiNeng huawei=new zhiNeng();			huawei.brand="华为";			huawei.size="4寸";			huawei.call();			huawei.mesaage();				feiZhiNeng oppo = new feiZhiNeng();			oppo.brand="oppo";			oppo.size="2寸";			oppo.call();			oppo.mesaage();		feiZhiNeng nokia = new feiZhiNeng();			nokia.brand="诺基亚";			nokia.size="3寸";			nokia.call();			nokia.mesaage();	}}

     运行结果: