今日分享开始啦,请大家多多指教~
前言:
1)java 面向对象语言,面向过程围绕过程(解决问题步骤),面向对象围绕实体(名词,个性(属性),行为(动作、办法))。它们设计思维区别在于关怀外围不同的。
支流都是面向对象的。
理论开发,先按面向对象思维进行设计,具体实现时面向过程(人习惯)
2)java怎么反对面向对象呢?
a. 万物皆对象,所有的类都是Object子类
b. java中反对单继承,多重继承,Tiger是Animal子类,Animal是Object的子类。满足单继承(每次都一个父类,超类)
c. 面向对象的4大个性:封装、继承、多态、形象
3)封装的长处
a. 暗藏细节,开发者关注内容就少,好写代码,
b. 平安,你不须要晓得我外部实现细节,private润饰后,内部不能拜访。
c. 不便批改,公有,内部不能拜访,批改不影响其余类(送耦合)
4)继承
a. extends 继承
a.1 继承实现类 class
a.2 继承抽象类 abstract class (必须有形象办法,子类去实现)
b. implements 实现
实现接口 interface (外面全是形象办法,子类去实现)
面向对象
1)面向过程(晚期)、面向对象(支流)、面向服务(SOA、微服务)(支流,在面向对象根底上)
2)面向过程和面向对象的区别?
编程思维,做一件同样事件,做的思路不同。
思路不同在哪里?
例子:把大象放到冰箱里。(本意:把公大象放到格力冰箱中)需要变更
面向过程:开发步骤(流水账)
a. 把冰箱门关上
b. 把什么放进去:大象
c. 把大象放入冰箱
d. 把冰箱门关上
找出主体:名词(冰箱、大象),围绕它做事
找出动作:动词(关上、放入、关上),强调过程
面向过程:找出把名词主体,和动作(动词)连接起来,最初怎么实现整个过程!
面向对象:
a. 找出主体(名词:冰箱、大象)
b. 创立模型:(额定思考,感觉画龙点睛)
冰箱:容大、色彩、品牌、耗电、关上、关上
大象:产地、公母、皮、腿
c. 执行步骤
关上冰箱,把大象放入冰箱,关上门
它思考额定事件,目前为止用户不关怀。
在理论开发中,用户不恪守他的话,他说的话不算数。
理论开发中,无奈齐全(合同),无奈严格按合同执行,开发者就必须适应用户的需要变更。
从这一理论角度登程,面向过程思考好还是面向对象思考好!
如果依照面向过程思考,它不能适应用户需要变更,要批改代码,加班加点实现。后面思考不够欠缺。
如果依照面向对象思考,它提前思考很多细节,超过用户要求,外表上多思考了,然而当用户需要变动,刚好就在咱们多思考领域中!代码不需改,改变量很少。按期实现,无需额定资金投入。
面向对象要思考很多,思考范畴,不能太广,适度设计。设计都须要人力物力。
有一个平衡点,设计多大范畴适合呢? 零碎分析师(高薪!)8年
到超市购买商品
第一次用户提出需要:要购买白酒和花生米
第二次用户提出需要:要购买白酒和花生米,买猪头肉(需要变更)
第三次用户提出需要:+ 凉菜
用户变动n次
面向过程:
1)到哪个超市
2)筛选商品(白酒、花生米)2种,
3)购买,完结
每次需要都要改,有可能之前代码框架都无奈适应新需要,天翻地覆重做。
面向对象:
1)都有哪些超市,都有哪些商品,对超市商品全副建模 2000种商品
2)到某个超市,筛选商品(白酒、花生米、猪头肉、凉菜)
3)购买,完结
总的来说:面向对象优于面向过程设计,支流设计思维面向对象设计!
java是怎么反对面向对象设计的?
java面向对象,c面向过程,c++面向对象,python面向对象,javascript面向对象,vue框架面向对象
java 四大个性:围绕面向对象而言:封装、继承、多态、形象
封装
面向过程过程中每个细节都须要开发者去理解,封装扭转这样形式,它先进行建模,把名称创建对象,设置它的属性(代表这个事物的特点)和办法(体现一些动作)
把生存中的物品形象成java中的对象
对象为了简略,有些内容对外裸露,有些内容暗藏。暗藏就体现了封装。
例子:手机
如果晓得手机所有细节,咱们当初都用不上手机。
1)对外裸露:屏幕、键盘、话筒、耳机、充电器
2)暗藏:怎么通信,运行app
对有些内容使用者是不关怀它的外部实现,手机把这些内容进行封装,用户应用就简略了。
代码如何实现封装呢?
有些性能用户不能去拜访,用户不须要晓得内容封装。
它须要晓得,咱们会独自给它接口api
手机:
1)创立一个类:Phone
2)类中封装,对外看不到,创立属性 call、keys,公有 private (体现了封装)
3)对外裸露:怎么开发call,怎么开发keys?私有 public
package cn.tedu.oop;//模拟手机建模(建设模型)需要中的名词public class Phone {//成员变量,能够在多个办法中间接调用private String call; //模仿打电话个性private String keys; //模拟手机键盘个性//如何对外裸露公有的属性,对其进行操作。//应用getXxx(获取)和setXxx(设置)办法来操作公有属性//这个业界的标准,开发工具都间接反对主动产生对应属性的get和set办法//公有属性内部不能拜访,但在类的外部的办法能够间接拜访public String getCall() {return call;}//内部怎么去设置成员变量值呢?setCall办法的参数public void setCall(String call) {//后面成员变量,前面是参数,参数就保留了用户设置值,//当前用户应用get办法就能够获取新的值//参数名和成员变量的名称反复,怎么辨别谁是谁呢?//this.value就能够辨别,this代表本类,对象,this.value代表成员变量,就不是参数名this.call = call;}public String getKeys() {return keys;}public void setKeys(String keys) {//警察,监听电话,//用户只管调用setKeys办法,它并不知道这块代码if( keys.equals("110") ) { //判断keys值是否为110System.out.println("告诉警察");}this.keys = keys;}}
封装的益处
1)把不让外界晓得的信息就暗藏起来,内部无奈操作。代码比拟平安,内部无奈操作。
2)代码只能外部解决。当代码批改,所有调用中央都要随之扭转,这种构造紧耦合。如果代码只能外部批改,批改后,内部丝毫不影响,这种构造松耦合。程序能实现松耦合就松耦合。封装就实现松耦合构造。外部批改不影响其余代码。
3)封装后,外面程序实现细节,对应调用者来说不关怀,只关怀如何应用。把简单问题变简略。
继承
什么叫继承?
java中继承和生存继承是一样一样的。父类(父亲)和子类(本人)。父亲父亲,子类子类。
java继承单继承,c语言容许多继承(c语言代码品质出错,很难找的其中一个起因)。
论断:java中单继承,然而能够多层
java中如何实现继承关系?
实现继承关系提供2个形式:
1)extends关键字(继承):语法extends前面跟类(class 实现类、abstract class 抽象类)
Tiger extends Animal
Eagle extends Animal
特点:Animal是一个实现类,它具体实现eat办法
抽象类特点:它有局部实现(父类本人实现)和局部规定不实现的(子类去实现)
Tiger extends AbstractAnimal(抽象类中有形象办法,形象办法父类不实现,压到子类去实现)
2)implements 关键字(实现):语法implements前面跟接口(interface)
接口特点:所有办法都是形象办法,一点活都不干,它指手画脚(它要规定子类实现办法)
为什么要应用继承?
咱们能够从父类继承它的属性和办法,在子类中间接调用父类资源(属性和办法),办法和属性都是public。
通过对下面两个类的察看:
1)它们有共性,eat办法一样
2)它们有共性,Tiger类它有本人的run()办法,Eagle类它有本人的fly()办法。
有共性有不同!
毛病:
共性的办法,呈现在多个类中,如果业务须要批改,要批改多处,工作量大,容易造成失误,这个类改,那个类
忘改,造成后果不统一!
继承
解决办法?就是继承!
1)要把共性办法抽取进去,放到一个独自类中 Animal
2)把共性办法就从以后类中删除
3)两个类连接起来,应用继承,Tiger extends Animal,能够在子类中间接拜访父类办法eat()
抽象类
接口
实现类和抽象类和接口区别
为什么须要抽象类?
学框架,框架中很多抽象类。例如:spring框架
框架要做很多底层专用事件,让咱们写代码利用框架,程序更加强壮,更加平安,
业务需要公有事件,还得咱们去实现
专用框架实现,公有咱们本人实现,咱们本人写代码怎么和框架对接。框架进行规定!
标准公有类(形象办法申明)
为什么须要接口?
提倡面向接口开发,你能够实现接口,他人可不可以接口。
java JDBC 数据库一套标准,java本身规定接口,其余厂商去实现
mysql数据库厂商,Mysql的实现;oracle数据库厂商,oracle的实现。
小结
今日给大家分享的是面向对象,这对于很多小白来说很敌对的,大家都能看得懂!
今日份分享已完结,请大家多多包涵和指导!