求解,死活理解不了java面向对象的意思。。。
自学java前面的都很简单,可是到面向对象这里实在是太抽象了,我的基础又不好,这里实在是理解不了,看了很多相关解释还是云里雾里的。。。面向对象的特性我知道也能理解,但这个...
自学java前面的都很简单,可是到面向对象这里实在是太抽象了,我的基础又不好,这里实在是理解不了,看了很多相关解释还是云里雾里的。。。面向对象的特性我知道也能理解,但这个面向对象是什么意思,对象到底是个什么玩意。而用new创建这个对象的意义何在。
展开
1个回答
展开全部
面向对象是一种编程的思想,并不是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对象能够很好地被记录下来。
面向对象有啥好处?
低表示差异(与生活中的实际物品比较)能提供设计的灵感。保留了清晰的可扩展边界,减少了重复臃肿的代码块,也可以作为团队之间协作沟通的统一思想。
面向对象没有缺点?
掌握面向对象有一定的门槛,需要整个团队所有人员有一定的理解。项目启动初期进展慢,随着项目越来越复杂效果才会明显。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询