Face第五天————面向对象

1.什么是面向对象?

面向对象就是基于面向过程的编程思想。面向过程是注重于过程,不在乎结果。而面向对象与他相反是把复杂的事情简单化,不在乎过程,只看结果。当你遇到问题时不是去考虑第一步怎么做,第二步怎么做,而是应该考虑让谁来做,让那个对象来做。他怎么做你不用关心,只要结果就好。因为在面向对象里把一切都看做是对象,万物皆对象。对象就是把每个实物都看做是一个对象,没个对象都有自己的属性,行为啊。然后把这些相同的实物,对象归纳到一起,看做是一个类。java就是一门面向对象编程的语言。

 

2.面向对象三大特征

.封装

封装也称信息隐藏,封装就是指将不需要对外提供的内容都隐藏起来,提供公共方法对其访问,你无须知道隐藏的内容是怎么实现的,只需根据留在外部的接口进行操作就行。比如电脑,他由显卡,主板,内存等组成,你也不知道内部是怎么组装的,反正外部给你留了接口了。封装他是有private实现的,private是私有化的意思,在java中是一个关键字,一个权限修饰符,在类中通过private把成员变量私有化,被修饰过得成员只能在本类中访问,但是会提供get()和set方法对成员进行访问。set有参无返回值,get无参有返回值。参数和返回值的类型都和对象中相对应的类型一样。封装的好处能提高代码的安全性,复用性。

 

.继承

继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。就是儿子继承父亲,父亲有的东西儿子也有,父亲没有的儿子还有。继承是通过extends关键字可以实现类与类的继承,单独的类称为父类,基类,多个类称为子类,子类也可以有自己的方法。但是子类不能拥有父类private的属性,方法。

但是java只支持单继承,不支持多继承,但是可以多层继承。

好处:提高了代码的复用性,维护性,代码需要修改时,修改一处即可,让类与类之间产生了关系,是多态的前提。但是这也是一个弊端,类与类之间耦合性太大。

.多态

在同一个对象在不同的时间表现出不同的状态。比如豆腐。多态的前提得有继承的关系,重写父类的方法,还有父类接口引用指向子类对象(父类 fu =new 子类();),子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,这样不仅能使用子类强大的功能还能使用父类的方法。如果父类想调用子类新添的方法,需要强转成子类。也就是向下转型(父类的对象强制转换成子类的类型(子类)),这样可以提高代码的扩展性,灵活性。也是多态的好处。

变量不能被重写(覆盖),”重写“的概念只针对方法,如果在子类中”重写“了父类中的变量, 那么在编译时会报错

java语言中,多态性体现在方法重载和方法重写。

方法重写是继承关系中子类对父类的方法进行了继承,返回值和参数列表都相同

方法重载是在一个类中,方法名字相同而参数列表不同,返回值的类型可以相同也可以不同.

 

多态例子:坐公车时,一个男的靠在你的肩膀,你可能不爽,但是如果一个美女靠在你的肩膀你就很乐意,这就是多态的表现

 

3.五大原则

3.1单一职责

一个类应该只有一个发生变化的原因。

指一个类的功能要单一,就是一个类最好只实现一个功能,不能,一心不能二用,包罗万象。因为如果一个类有多个不同的职责的话,他们的耦合性就会很高,而且当某个职责发生变化时,或者要复用该类的职责时,但是他和其他职责耦合在一起很难分离,可能会影响其他。

所以单一职责可以减少类的耦合性,提高复用性。

3.2开放封闭

对扩展是开放的,对更改是封闭的!

对扩展开放,就是一个App在开发完成后,然后又有新的功能要进行添加时,可以对现有代码进行扩展,实现更多功能,满足客户需求。对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,就不要他进行任何尝试的修改,保持软件内部的封装体系稳定,不被需求的变化影响。需求总是变化”没有不变的软件,所以就需要用封闭开放原则来满足需求。

3.3里氏替换

子类应当可以替换父类,并出现在父类能够出现的任何位置

里氏替换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常

使用里氏替换原则时需要注意,e33zp子类的所有方法必须在父类中声明,或子类必须实现父类中声明的所有方法

3.4依赖倒置

高层模块不应该依赖于低层模块。二者都应该依赖于抽象

在面向过程的开发语言中,都是创建一些高层模块去调用低层模块,如果底层模块发生变化时,高层模块会受影响,而在面向对象中,他们都依赖抽象类,和接口。因为抽象类和接口不会经常发生变化。

3.5接口隔离

使用多个小的专门的接口,而不要使用一个大的总接口。

就是说不要把所有接口放在一个一起,这样会导致这个总接口过于臃肿,而且存在明显的弊端,如果有个类要实现这个接口,那就必须实现这个接口的所有方法。

场景mvp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值