Java编程思想学习笔记——1.0对象导论
作者:互联网
记录学习使用,欢迎留言讨论(如果想要知道完整的知识请查看java编程思想第一章的内容)
居然因为版权审核不过~~~
抽象过程
只针对待解决问题建模:首先可以理解为有两个模型一个是我们所遇见的问题所用是问题空间,一个是解决问题所用是解空间。他们是一一对应关系。
如要使用代码实现一个灯泡,在问题空间中应该有一个灯,它具有开灯、关灯、变亮、变暗的功能。
在对应的解空间中就有一个Light对象以及对应的方法。
Light lt = new Light();
lt.on();
通过将问题抽象成对象,给对象发送请求(调用方法)完成灯的操作。
面向对象语言五个基本特性
- 万物皆对象
- 程序是对象的集合,它们通过互相发送消息来告知彼此所要做的事。
- 每个对象都有自己的由其他对象构成的存储。(可以通过创建包含此对象的包来创建此对象)
- 每个对象都拥有其类型(类型就是类class的同义词,每个对象都有其对应的类)
- 某一特定类型的所有对象都能接收同样的消息(编程时可以通过向上转型处理其基类避免大量的if判断)
隐藏具体实现
好的程序应该做到高类聚低耦合(每个类负责一个功能,类和类之间尽量减小关联)
将程序开发人员分为类创建者和客户端程序员
类的创建和使用将其分离开(Spring框架就完成了创建和使用的分离,AOP还能进行扩展),有些类中的成员变量并不允许直接访问,如果改变其值很容易发生bug。
访问控制两个原因:
-
让客户端程序员无法触及不想让他们操作的部分。
-
允许库设计者可以改变类部运行方式而不用担心会影响到客户端程序员。(就像ArrayList和LinkList的内部运行不一样但是我们使用操作方法是一样的)
访问权限: -
public——任何人都可以使用
-
默认访问权限——同包可使用
-
protected——继承关系可使用
-
private——只允许自己使用
组合和继承
组合是将一个作为另一个类的成员变量使用其方法。如下图
组合可以组合多个成员变量但是继承只能继承一个,而且组合相对于继承更加的灵活,在设计模式看来继承比组合耦合度更高,在考虑使用时应该优先考虑组合。
继承如下图:
面向对象的一个好处就是可以使用多态特性:
//定义一个方法,传入一个几何形进行擦除和绘制
void doSomething(Shape shape){
shape.erase;
//...
shape.draw;
}
Circle circle = new Circle();
Square square = new Square();
doSomething(circle);
doSomething(square);
因为继承会继承基类的方法,每个继承自基类的导出类都有其父类的方法。
此处运用向上转型的方式操作圆、正方形进行擦除和绘制。
单根继承结构
所有的java对象都继承自Object类。
这种单根继承结构使得每个类都具有一些相同的功能,例如比较equal方法、打印toString方法等。
标签:Java,组合,继承,编程,客户端程序,对象,使用,1.0,方法 来源: https://blog.csdn.net/guigui_xia/article/details/112146388