如题,谢谢大家!
解决方案 »
- 输出结果分别是什么?为什么啊?
- com.gjt.mm.mysql.Driver 的作用是什么?
- 谁可以帮忙改个方法啊~~~~~~
- java中设置字体的问题
- 征求此新手代码的执行过程说明及原理分析
- 我想用JAVA中的Swing包实现窗体的置前与最小化,大大们帮忙呀,我也想要code,发给我呀~~
- jsp与access数据库 (tomcat)紧急!@!!
- 用什么方法来保护Java程序的安全
- 郁闷,我为何装了j2sdk1.4.0之后,application 程序可以运行,但是为何就是没有java console ,而且在运行java applet 时只有框架,没有内容,
- 排序
- static 方法不能被重写??
- hashcode,hashmap,hashtable之间有什么区别,和什么时候可以用到他们啊?
JF ..
遗憾的是,现在国内很多解释往往认为两者作用相当,甚至混为一谈。抽象类的实际存在意义比很多人想象的要小得多,其实它就是一个“半成品”的类,和一般类一样,但是不能直接实例化,因为它是半成品。
其实,抽象类也可以是一个完全的“成品”,但是你不能把它当作成品来用。而要理解接口,则需要更多的抽象思维能力。
类可以说是对象实例的一个完整模版,因为实例所拥有的属性和行为与类中定义的完全一致。
而接口则可以说是一个完整模版的某一或某些部分,这些部分因为具有某种关联而被定义在一个interface中。最让初学者困惑就是:为什么接口中定义的方法,在其实现类中还要重新定义一次?而不是像继承那样,直接可以得到?接口的存在似乎可有可无。要回答这个问题,需要涉及到接口的作用问题。接口不是让其实现类得到某种特性,而是让其它的类可以从某个侧面去观照这个类,从而实现类间通信的目的。接口的作用如同它的名字一样,是用来对接的。所以,“实现接口”只是体现了接口作用的一部分,另一部分则是“使用接口”。还有一个我觉得很容易引起误解的解释在周围很流行,就是把超类和派生类的关系解释成父亲和儿子的关系,个人认为这是非常不恰当的。
超类比派生类具有更多的抽象性,而父亲和儿子在抽象性层面上一致的。
所以,我在平时用语中很少用“父类”和“子类”这两个词,写代码时也很少用Parent表示超类,Child表示派生类。
大家可以参考一些权威著作,大多是用Base和Inherited等作为类名。以上个人心得,希望对楼主有用。
接口中的属性默认都是static final
抽象类可实现接口 而接口不能继承抽象类
都可以实现抽象一个类的效果,基本上在国内不强调区分,而着重应用.
区别:
1.
接口的出现最大的作用是弥补继承类中单一的特点,所以接口可以继承多个类,同时必将其抽象化;
而抽象类只能继承一个类.
2.继承一个接口后,所有的方法,不能再抽象,必须实例化.(不能实现方法重写,方法修饰符为final);
抽象类的重写方法可以再抽象.
-----------------------------end----------------------------------
接口是抽象类的另一种形式
接口中所有方法不必再声明abstract 因为所有方法都是抽象方法
接口中所有属性为final static 解释下
abstract和final不能同时使用 解释下
接口叫实现implements 抽象类叫继承extends差不多了
接口只定义了应该做什么,而没有定义该怎么做 所以,如果你的程序只有你一个人完成,且每个功能只有一种实现的方法,我想你可以,注意是可以,不用接口 如果有多人合作,你可能开发的快,可惜你需要的一个类,你的同伴还没有完成,你怎么办?等他吗?
如果是面向接口,你可以自己先写一个最简单的实现来调试你的代码,Spring这时是个好帮手。 如果一个功能有多种实现,比如导出文档。 有的要html的,有的是word/Excel/PPt/PDF 等等。
因为你无法预见他们到底需要什么,这时候,你可以用接口,要求每个实现只需要完成 export 方法就行。
然后你自己做了一个Excel的,以后按需要再完成其他的,而此时,你原来的程序根本不用修改,因为他们调用的是接口,而不是具体的某个实现类。
狗叫,猫叫, 对于叫就是一种接口。
狗叫,猫叫,花猫叫。。这时候定义个抽象类比较好。 因为花猫继承猫的,所以比较有层次感。
http://blog.csdn.net/Slugfest
老围着JAVA来讲肯定讲不明白。。
至于接口,我的理解就是屏蔽具体的实现方法,比如你去邮局寄信,你只要告诉邮政人员寄信就行,至于他是骑自行车去送,还是用火车运,飞机运,跟你没关系,你只需调用他的“寄信”接口,正是所谓“屏蔽具体的实现方法”。
抽象類是必須要實現的接口你就告訴他們,接口是用來overlaod的
抽象類是用來overwrite的
雖然不一定確切,但我覺得這是最快解釋清楚的方法
参考我以前的帖子,基本就可以否定一部分的发言了。
推荐这两篇。
http://blog.csdn.net/Slugfest
http://topic.csdn.net/u/20071229/20/50c600d9-8369-4c75-a53b-73249696082b.html 第一篇从面向对象的角度阐述接口,既不落语法的窠臼,又会捎带模式。
第二篇主要会纠正了一些错误的观点。
上面红色字体的讲法是错误的,接口中的方法修饰是public abstract,而不是final。如果是final那怎么可能要加上abstract??
接口中的方法可以进行再抽象,即如果类实现了该接口中的个别方法,而没有实现另外的方法,只要把没实现的方法声明为抽象方法以及类也声明为抽象。interface A{
void pintA();
void printB();
}abstract class Test implements A{
void pintA(){System.out.println("A");}
abstract void printB();//抽象
}
2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
3.一个类一次可以实现若干个接口,但是只能扩展一个父类
4.接口可以用于支持回调,而继承并不具备这个特点. ”
初学者绝对云里雾里!这样强记痛苦万分!
而且我觉得从他们的程序规则上去记忆它的特点,还不如不记,他们最大的分别应该从设计模式上来区分!
这么晕...跟学生说能听懂吗?
学习阶段嘛,就只要明白区别就好了,至于具体的意义阶段,应该在以后让学生在设计过程中慢慢体会
恩....要不然让他们看"深入浅出XXXX",好好体会,自然就明白了
这种东西都是自己体会来的,哪说的清啊
抽象类是指类中存在没有实现的方法。在有模型中,可以确定某个类一定会有一种操作,但这个操作到底应该干些什么,则必须具体到他们的子类才可以确定。但对使用者而言,他只需要关心基类的类型。比如说,一个公司中有员工类(Employee),员工类有很多子类,如保安(Guarder),销售(Sales),会计(Treasurer),工程师(Engineer)等。在这个模型中,员工类(Employee)的方法:上班、工作、下班、领薪水、辞职等。但是,因为公司中每个员工因为职务不同,从而“工作”这个方法会因不同的子类而有不同的实现方式:保安做保卫工作,销售主要和客户进行联络,会计算账,工程师干技术活。因此“工作”这个方法只能由其子类或孙子类来实现。
而从老板的角度来看,他在要求他的员工去工作的时候,只需要调用员工对象的“工作”方法即可,从他的角度看,无论什么职位的人都是“员工”。
"接口确定了对某一特定对象所能发出的请求" 打个比方,电脑上的两个插孔,一个耳麦,一个耳机,耳麦就是只实现了“耳麦”这个接口,耳机则只实现了“耳机”这个接口, 所以,当耳麦插入耳麦的插孔时,由于他实现了“耳麦”的接口,所以他就能能实现耳麦这个功能,插入耳机的插孔则什么功能也实现不了,这个“接口”就确定了 “耳麦”这个对象发出的耳麦功能的请求。 回到java中,比如有一个主板的类,一个ATI显卡的类,有一个接口是让主板能识别ATI显卡的,当实现了这个接口后,主板就会识别ATI显卡,但是如果插NVIDIA 的显卡,这个主板就误差识别出。
over 这是我回答别人问题时说的~~~
不知道说的对不对!
文章写得好,我再一次引用http://blog.csdn.net/Slugfest/category/359453.aspx
都可以实现抽象一个类的效果,基本上在国内不强调区分,而着重应用.
区别:
1.
接口的出现最大的作用是弥补继承类中单一的特点,所以接口可以继承多个类,同时必将其抽象化;
而抽象类只能继承一个类.
2.继承一个接口后,所有的方法,不能再抽象,必须实例化.(不能实现方法重写,方法修饰符为final);
抽象类的重写方法可以再抽象.