[接口和抽象类的怎么用呢?]
我现在能实现接口和抽象类,但是不知道即使实现了它们又有什么用途呢?我觉得不用那也可以做啊?这是为什么呢?郁闷啊,求解?
------解决方案--------------------你如果要用Collections.sort或Arrays.sort函数给你自己定义的类的对象排序,那你的类不实现Comparable接口能行么?
你如果想创建一个线程,那你定义的线程类不实现Runnable接口能行么?你当然可以直接从Thread类派生,但Thread类是实现了Runnable接口的,这等于说你还是间接实现了Runnable接口。
还有,你抛出的每一个异常都实现了Thowable接口。如果你非要让你的函数“抛出”一个没有实现Thowable接口的类的对象,那编译器不报错才怪呢。
------解决方案--------------------这是一个java初学者常有的问题,我初学的时候也有这样的问题。
那是应为对面向对象的思想理解不透澈造成的。
程序的设计要依赖于接口不能依赖于实现,这样就达到一个程序松偶合的目的。当然接口的用途不仅仅如此。
至于它们的作用可功效等你更透彻的理解了面向对象的思想以后你就会明白的,暂时你先记住它吧。
------解决方案--------------------曾经有个面试官问我:那个“借口”和“找抽”有什么区别?
我当时是这样回答的:
“借口”就是共产党的军队。
“找抽”就是大锅饭。
本人喜欢“找抽”
结果面试官一愣,怎么回事呢,你的答案我第一次听说。
之后本人又作了一番解释:“那个接口就是一个标准,声明一个方法,实现它的类就要实现这个方法,它是绝对严格执行军令的”。
“那个抽象吗,就是声明一个方法,但是不一定要实现,饭想吃就吃”
但是为了后期的事情好办就只好“找抽”了。
面试过后,给本人的评价是能将生活融入技术,轻松通过。
************************************************************************************
记住啊---没事要“找抽”啊!!!
------解决方案--------------------谈谈我的看法: JAVA的基本特征是封装性,这个封装性就在于使你有能力为功能的调用者提供一个对外的门面. 门面只告诉调用者你需要提供给我什么参数,我会完成你需要的功能,并返回给你什么东西, 而具体怎么实现这个功能,调用者不需要关心. 这个门面就是interface 可能一个interface下面有10个实现类来完成同一个方法,但实现方式是不同的. 可以利用一些工厂或IOC之类的东西来灵活的切换这些实现方式.而调用者并不知道这些.
而抽象类的级别应该在接口之下, 负责将接口下面的各个类中的共同部分提取出来,做到避免代码重复,提高可维护性. 抽象类可能有时还会负责去实现接口,以达到它的子类都能共享这个接口的目标....