JAVA的封装和继承

面向对象是编程的重点,涉及到类的封装、继承、抽象、多态及接口的设计等。中,封装、继
承、多态是面向对象的三大特征。MVC架构中的" Model"部分的设计,实际上就是基于对象的设
计,就是面向对象编程。而面向对象编程,是一门]较深的学问。面向对象编程的方法可以通过具
体实例总结,而在不同的具体环境及求中,对象设计及方法的应用,是需要长期的实践经验来
积淀。通过不断熟练面向对象编程思维,权衡功能以尽可能实现需求,来完善代码,进一步增强
代码可读性和简洁性、实用性。因此,“武功秘诀” 虽简单,但练就绝非一朝- 夕。
本文基于Java面向对象编程,引了一些实例及相应方法,以烬可能总结Java面向对象编程封装
和继承的要素。
封装
●封装:是一种面向对象编程方法,对类的具体实现细节部分进行包装隐藏,只暴露方法接口,
仿法的实现不完全暴露给用户。
●前提:正确地表达现实生活中的问题,并保证代码的拓展性和可维护性。

●整体思路:是将把代码分成两个部分:接口和实现,以类的形式进行封装。其中,接口将涉及
和外部的交互,属于对用户暴露的部分,应该保持稳定,因此修改维护代码的时候,可以只改
内容而不改变接口,使用方式不变;内部实现不需要暴露给外部用户,在接口功能不被影响
的前提下,可以随意修改和重构。
●封装方法:对类的内部状态的访问进行控制,根据需求只提供该提供的信息。采用private和
fina等修饰符对相应成员变量或方法进行访问或修改控制,再用getter和setter等方法作为接
口,赋予私有变量的可读或可写权限。final限制了 setter的使用,进一步防止私有变 量被修改。
●原因:可以防止用户使用的时候出错,或降低出错的可能。户在调用编写的类的时候,有一
定概率会出错,不能低估用户的想象力。但在团队合作中,必须考虑什么事情该自己承担,什
么是用户的责任,什么是自己的责任。因此设计产品的时候,优先设计为private隐藏信息, 再
考虑是否有暴露出去的必要,根据具体需求改成public或其他访问权限。
●原则:高内聚,低耦合,良好的封装是解耦的基础
低耦合:保留必须的方法
高内聚:大部分具体实现代码可以修改
●应用场景:
1.发现代码有问题,需要进行错误修正或优化算法来改变实现
2.发展新能力,通过修改方法内容来实现,例如读取文件的方式可以从txt文档读取,发展为从word文档中读取,或从本地文件读取发展为网络信息读取

●总结:尽可能向用户暴露更少的信息
原因:
1.给予用户的接口越少,他操作时基于的东西就越少,他需要知道的知识越少,这个程序在使
用上就越简洁,使用成本越低
2.暴露的代码越少,户依赖于我们写的代码就会越少,我们在修改维护时就可以进行更灵活
的更改。而任何暴露给用户的内容,基本上是不能更改的,或者说更改暴露内容是万不得已的
选择
继承
●继承:是Java面向对象编程技术的一块基石,因为他允许创建分等级层次的类,即分层
●方法:在声明子类的时候,通过关键字extends表达继承
●特性:
1.子类拥有父类非private的成员变量和方法
2.子类可以拥有自己的成员变量和方法,即子类可以对父类进行扩展
3.子类可以重新实现父类的方法, override
4.Java只支持单继承,即只能有一个父类,省去了多继承带来的麻烦(C++不一样, 可以多继
承)
5.super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父

6.this关键字:指向自己的弓|用
7.final <类>:防止类被继承
●关系: is-a
父类具有子类的公共变量和方法,子类是更具体的父类,子类继承父类的特征和行为,使得子
类对象具有父类对象的特征和方法,并拓展额外的功能。因此设计时将对象的公共部分抽象出
来,从子类抽象出父类,更直接更符合设计的直觉
●原则:没有重复代码
●构造方法:有的父类,才有的子类,因此要先初始化父类,在子类的构造器中显式地通过
super关键字调用父类的构造器并配以适当的参数列表。
中,子类不能继承父类的构造器(构造方法或者构造函数),如果父类的构造器带有参数,
则必须在子类的构造器中显示地通过super关键字调用父类的构造器并配以适当的参数列表。
如果父类的构造器没有参数,则在子类的构造器中不需要使用super关键字调用父类构造器,系统会自动调用父类的无参构造器(并不是不用)

总结:继承为了继承成员变量,可能会牺牲private和final,protected修饰,但会牺牲部分安全性(只能用注释声明告诉用户不要修改它),因此这又是一个权衡的过程与责任的分配,因此在写类的时候要考虑其是否将来会被继承,来决定变量的访问限制。



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值