JAVA小白系列之第二个分支:面向对象编程

想必刚入门的小白总是搞不清楚面向对象和面向过程这两个概念,虽然我在前面有所提及,但是都是泛泛而谈,也有各种语言融入进去,不理解的会越来越晕,那么,这节我就专门来讲讲什么是JAVA的面向对象。

面向过程和面向对象回顾
不记得概念的可以具体看看之前的文章,这里仅做简单的回顾:

面向过程
关注于流程本身,也就是关心数据的流向

面向对象
关注于模型本身,让代码具有人类的思维模式,更贴近于人类的理解

总结:比如,如果说需要去做一件事,那么如果以面向过程的方式去做那么需要关注这件事的流程:第一步干嘛,第二部干嘛等等,如果以面向对象的方式去做那么就需要考虑到这里面有几个对象,每个对象有哪些属性和行为,对象之间又如何进行交互,看伪代码:

面向过程:

Function progress_1();

Function progress_2();

Function progress_3();

......

Main(){

progress_1();

progress_2();

progress_3();

}

面向对象:

Class 对象1{

//属性

//行为

}

Class 对象2{

//属性

//行为

}

Class 对象3{

//属性

//行为

}

Main(){

//对象之间的交互过程

}

面向对象的三大概念
刚开始接触这三个概念的小白,会很蒙,面试的时候问起来,还是无从回答,或者回答得含含糊糊的,给面试官留下不好的印象,那么我现在就来大白话一下这三个概念,做到人人都可以在面试中回答出优秀的答案。

封装
从字面来看,封装就是把东西包起来,那么为啥要包起来呢?一般来说你想想,如果你快递买了一些东西,咳咳,你懂得,那么店家会怎么办?用一个没有描述的箱子包装得死死的,那么为什么呢?就是不让别人看到对吧,那么在物流中,也需要用胶带严密的封装,那么为何要盒子装,要封装?各位看客绝对说,这不明摆着么,为了保护商品嘛,对的,那么在面向对象编程中,封装就是用来保护里面的属性也就是成员变量【商品】的,这下明白了吧,一会儿我们再来看看具体的java是怎么封装的。

继承
同样,先看看字面意思,先想想看,什么情况最常用到这个词,那就是某某人去世了,谁谁谁继承了他的遗产,对吧,那么继承这个字面意思讲的就是从某个事引申出别的事,而引申出的事情具备被引申出事情的属性并且引申出的事情有它自己的属性,就像上面说的继承了遗产,那么你就拥有了这个遗产,并且你还可以用它去挣钱然后扩充这笔遗产对吧?同样的,在面向对象编程中,继承就是从上一个对象上拿一些东西过来,并且你还可以对引申的对象进行补充,那么在编程中这个引申两个字就变为了派生,所以大家经常说某某类派生自某某类【类是对象的模板,所以这么说也没问题对吧,不懂类和对象的关系的去看看第一节】。

多态
字面意思呢,就是多个形态,那么在了解了继承的概念后,这个就简单了,就是同一个物体有多种形态嘛,你想想,你继承了遗产,那么这个遗产是不是有两个形态:1、原遗产 2、你扩充了它,再来,你父亲生了你,你是不是继承了父亲的特性,那么你是不是有两个形态:1、父亲具有的形态 2、你自己的形态,再来,如果你学习了C语言,很厉害,然后你根据C语言开发了另外一门语言,那么你的这个语言就有两种形态:1、c语言的特性 2、你语言独有的特性等等,例子数不胜数,也就是说多态这个概念是在继承这个概念上的一种解释。

那么,面试的时候应该知道怎么回答了吧?封装就是保护对象属性,继承就是可以让对象之间形成血脉关系,能够补充对象的额外属性,复用代码,多态就是在继承的概念上来描述了一个对象有多个形态的事实,继承是多态的依据~

JAVA的面向对象
来看看java的面向对象是怎样的:

//定义一个人类的类

Class Humen{

Private String eyes;

Private String foot;

Private String leg;

//省略封装方法

Public void walk(){};//走路

Public void see(){};//看人

}

定义一个学生类,让它继承自人类,毕竟学生也是人对吧,那么按照我们之前的概念来看,学生也有了人的性质:眼睛、脚、胳膊等,还有走路看人的方法,这些都是人类具有的性质,那么学生又扩充了上课和说话的能力,那么这里以多态的概念来说就可以说,学生有两个形态:1、人类 2、学生 对吧~

Class Student extends Humen{//extends关键字表示继承

Private String name;//名字属性【成员变量】

Private int age;//年龄属性【成员变量】

Public void setName(){};//

Public void getName(){};// 这两个方法对名字进行了封装,也就是如果我要访问name这个属性,那么我就只能通过这两个方法来访问,那么为什么说这是封装,你想你是不是可以再方法里写保护它的代码,比如权限判断,比如你还可以记录谁改了对不?

//age一样,这里省略

....

Public void speak(){};//这里就是说话的方法

Public void doHomeWork(){};//这里就是做作业的方法

}

Main(){

Student stu=new Student();//这里就是生成了一个学生对象,还记得我一直说类就是对象的模板么,这里用关键字new 来产生一个对象。Java产生一个对象是这样的:

类名 对象名=new 类名(参数);

Humen humen=stu;//这里就是让学生向上转型,也就是多态中让对象变为另外一种形态,这里就是让学生变为了人这个形态,当然你也可以把它变回去:stu=(Student)humen;括号表示强制转换,毕竟你想想,向上转型编译器可以知道你派生自谁,但是向下转型可能这个类派生出很多个子类,那么我们就得手动告诉编译器我想转为这个类。

}

那么以上就是java的面向对象三大特性的解释:1、封装采用set和get方法来访问属性 2、继承通过extends关键自来继承类 3、多态就是继承关系的一种描述。

挂上知识树
Ok,把这个知识点,挂上我们的知识树:

脑袋里有这么一棵树你还会忘么?
--------------------- 
作者:老黄谈JAVA 
来源:CSDN 
原文:https://blog.csdn.net/qq_27745951/article/details/83084966?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_35661171/article/details/83113913