求解,死活理解不了java面向对象的意思。。。

自学java前面的都很简单,可是到面向对象这里实在是太抽象了,我的基础又不好,这里实在是理解不了,看了很多相关解释还是云里雾里的。。。面向对象的特性我知道也能理解,但这个... 自学java前面的都很简单,可是到面向对象这里实在是太抽象了,我的基础又不好,这里实在是理解不了,看了很多相关解释还是云里雾里的。。。面向对象的特性我知道也能理解,但这个面向对象是什么意思,对象到底是个什么玩意。而用new创建这个对象的意义何在。 展开
 我来答
LMLU23
2016-04-26 · TA获得超过901个赞
知道小有建树答主
回答量:373
采纳率:0%
帮助的人:361万
展开全部

面向对象是一种编程的思想,并不是Java特性,只是Java支持面向对象。面向对象将程序中的各种元素视为对象,对象具有一定的职责,由多个对象互相协作来完成程序功能。

举个简单的例子,简单计算器,这个应该所有Java的书都有教吧:(下面是伪代码)

1.一般写法:

//读取第一个数a
...
//读取运算符号x
...
//读取第二个数b
...
//计算结果result
if (x.equals("+")){
    ...
}else if (x.equals("-")){
    ...
}else if ...
//END

2.面向对象写法:(这里对于计算器的简单逻辑写得有点过于复杂,只是意在说明面向对象的思想)

//获取部分可能和前面一样
...
//拼装成字符串s
...
//对象ExpressionAnalyzer负责分析获取的字符串,生成Expression对象
ExpressionAnalyzer analyzer = ExpressionAnalyzer.getInstance();//单例模式
Expression expression = analyzer.analysis(s);//为啥不是静态方法?分析器可能会有不同的分析方法,还有可能是开源的对象,甚至是购买回来的。相关设计模式Factory。
//ExpressionAnalyzer.analysis方法内部://相关模式Interpreter
    return new AddExpression(x, y);//AddExpression是Expression的一个实现类
//Expression是一个接口,负责计算结果
expression.calculate();
result = expression.getResult();//查询与命令分离
//END

为啥要这么做?

考虑到这个计算器会越来越复杂,还有乘法、除法,各种组合,添加if、else分支会导致代码块越来越大,最终导致不可维护;同时考虑以后可能还有记忆功能,Expression对象能够很好地被记录下来。


面向对象有啥好处?

低表示差异(与生活中的实际物品比较)能提供设计的灵感。保留了清晰的可扩展边界,减少了重复臃肿的代码块,也可以作为团队之间协作沟通的统一思想。

面向对象没有缺点?

掌握面向对象有一定的门槛,需要整个团队所有人员有一定的理解。项目启动初期进展慢,随着项目越来越复杂效果才会明显。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式