问题描述
我一直都觉得JAVA的一些面向对象的抽象的概念好难理解,什么多态,反射,接口与抽象类之类的,好难理解,反而那些Swing,I/O流,多线程,之类的比较好懂,因为我知道这么写会得到什么结果,前面那些太抽象了,要怎么去理解? 问题补充:我在看Core Java2,第4,5,6章看了2遍,还是一点概念都没有,在我现在的理解,继承就是 子类继承父类,子类可以使用父类中的方法和属性,对于封装,我有一点不解,书上说一个对象不要直接访问另一个对象的内部数据,只能通过方法调用的方式来访问,那通过方法调用来访问数据不也改变了对象的属性吗?那怎么能破坏封装性呢。多态一点都不理解。反射的话,像Struts2配置文件里面配置的Bean,是不是通过反射机制来获取实例的呢,或者说通过解析配置文件,然后获得类名后实例化类,这种做法叫做反射?接口完全不知道有什么用,Service和Dao层定义那么多接口,到底有什么用也不知道。抽象类只知道关键字是Abstract - -因为工作了有一段时间了,只知道照着别人的写,为什么要这么写一点概念都没有,所以很烦恼,很想知道为什么。。。昨天照着网上的资料写了一个Struts核心的功能,到是可以通过login.action来提交数据了,可是又碰到问题,如果前台是用user.username这样的形式来提交,action里只声明user这个对象的话,获取不到user.username的值- -,后来仔细看了一下代码,应该是在获取request里的值的时候只判断了String类型和数组类型,所以对象是不能获取到的,然后我就去看Struts2的源码,结果一头雾水- -,后来就联想到了这些概念了,我想必须先搞清这些概念才能看懂Struts2的源码吧。 多谢各位的答复,Think in java书上讲解这些概念的章节我也翻了2遍,也看不懂- -,还好公司书架上有这些书,不然翻都没地方翻了。
解决方案
本想把这些概念一一给你解释一遍,但应该没什么用,书上说的更好,你现在缺乏的是锻炼了。另外,刚入门就整SSH这些复杂的框架很容易让你迷失的,你可以试着用JSP+servlet+Jdbc做一些小模块,然后慢慢理解:Spring、Struts等框架是如何灵活运用继承、多态、封装、抽象的,甚至自己开发出一套类似Spring、Struts的MVC框架供学习。
解决方案二:
多态、接口这些特性是为了给程序留出足够的扩展性而存在的,你如果实在不理解,那你去做项目吧,按照自己的想法做,到时候痛苦的经历会让你理解的,
解决方案三:
封装:是把一个对象具有的数据和行为进行包装,有点像软件工程里面对内聚性。这样对好处是1,防止外部恶意更改数据;2,暴露自己所具有的行为,而调用者不需要知道是怎么实现的。比如 class Person{ public int age; public String name;}按照上面定义对Person封装对不够好,因为,外部可以直接给属性赋值:Person p=new Person();p.age=-2;p.age=300;这样因为使用者的失误,使得Person的状态出现了异常(年龄-2或300)class Person{ private int age; public void setAge(int age){ if(age>0&&age<100){ this.age=age; } }}下面对做法通过Person暴露的方法操作Person,可以由Person保证其状态的正确性
解决方案四:
慢慢就懂了 概念的东西当然好懂什么多态,反射,接口与抽象类之类的你说的这些主要用在设计模式上面的!入门是不好懂 多去论坛看一些别人对这些名字的解释及运用!
解决方案五:
看看《java编程思想》,我最近在看,看了感觉明白了很多
解决方案六:
也好理解啊,看看thinking in java,多多思考,就能理解了,