面向对象深入3 三大特性的理解

面向对象深入3 三大特性的理解

在编写代码时,我们追求”高内聚 低耦合” ,达到重用与规范, 则需要使用面向对象的三大特性来实现:
封装:encapsulation 隐藏信息
继承:inheritance 延续+扩展父类信息
多态:polymorphism 模糊策略 以不变应万变

一. 面向对象-封装性

1、封装( encapsulation)怎么去理解,一台电脑利用一个外壳包裹,保护了里面的电器元件,提供了少量的按键与其对接使用。我们程序设计要追求“ 高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅露少量的方法给外部使用。利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。
2、作用
a)、实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现了专业的分工,即工作中的分模块、分功能开发。
b)、隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来。
3. javabean
规则
在编写 javabean 中的有一些常用的规则如:
1)、属性尽可能私有化 private
2)、访问器: setter 与 getter 访问器 >private ,一般 public 居多 setterXxx: 存储> 与 getterXxx: 查看
4. 权限修饰符
public: 一览无遗;
protected:子承父业 (儿子自己使用);
default :家庭和睦;
private :占为已有

二、 面向对象-多态性

多态 polymorphism,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有 在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。
java中如何实现多态?使用多态的好处?
引用变量的两种类型:
• 编译时类型(模糊一点,一般是一个父类), 由声明时的类型决定。
• 运行时类型(运行时,具体是哪个子类就是哪个子类)
• 由实际对应的对象类型决定。
多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象

三、引用数据类型的类型转换

数据类型转换可以说是非常让JAVA程序猿头痛的事情了。有时候它在不经意之间就完成了(自动类型转换),有时候却又要求程序员必须手动指定(强制类型转换)。基本数据类型,转换规则还可以通过类型本身空间大小和精度分析明白,而且最多就是丢失精度但运行起来至少是不会报错。可是面对引用数据类型,这个“坑”就大了:有自动转的,有强制转的,居然还有强制都转不了的;自动转了的却把对象身上的方法丢了看不见;强制转的编译过了运行却可能报异常。
• 子类转换为父类:自动转换
上转型对象不能操作子类新增的成员变量和方法。
上转型对象可以操作子类继承或重写的成员变量和方法
如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。
• 父类转换为子类:强制转换

四. 抽象类

1、概述
使用了关键词 abstract 声明的类叫作”抽象类”。
抽象类是对抽象的世界建模,是作为父类使用的。比如: 请求出一个图形的面积? 这是你的思考究竟是什么图形?这个图形太抽象了?是三角形还是原型?图形怎么求面积?这个时候就可以把图形定义为抽象类。
几个要点:
抽象方法和抽象类均必须用abstract来修饰。
抽象方法没有方法体,只需要声明不需实现。
有抽象方法的类只能定义能抽象类 。
相反抽象类里面的方法不一定全是抽象方法,也可能没有抽象方法。
抽象类可以包含属性、方法、构造方法。
抽象类不能实例化,及不能用new来实例化抽象类,只能用来被子类调用。
抽象类只能用来继承。
抽象方法必须被子类实现。抽象类的子类必须覆盖所有的抽象方法才能被实例化,否则还是抽 象
类。
2、 抽象类应用场景
在下列情况下,一个类将成为抽象类:

  1. 当一个类的一个或多个方法是抽象方法时。
  2. 当类是一个抽象类的子类,并且不能实现父类的所有抽象方法时。
  3. 当一个类实现一个接口,并且不能实现接口的所有抽象方法时。

五、 面向对象三大特征总结

在编写代码时,我们追求”高内聚 低耦合” ,达到重用与规范,则需要使用面向对象的三大特性来实现:
封装:encapsulation 隐藏信息
继承:inheritance 延续+扩展父类信息
多态:polymorphism 模糊策略 以不变应万变
封装作用: a) 实现专业的分工,工作中的分模块、分功能开发。b) 隐藏信息和实现细节。使得对代码
的修改更加安全和容易
继承作用:实现代码的复用,延续+扩展父类信息
多态作用:以不变应万变(如 USB 接口,只要你实现了我的标准,就能插上电脑)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值