今日分享开始啦,请大家多多指教~
前言:
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 值是否为 110
System.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 的实现。
小结
今日给大家分享的是面向对象,这对于很多小白来说很敌对的,大家都能看得懂!
今日份分享已完结,请大家多多包涵和指导!