仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1754|回复: 20
打印 上一主题 下一主题

[学习教程] 来看Java基本:浅析Java笼统类和接口的对照

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:
abstractclass和interface是Java言语中关于笼统类界说举行撑持的两种机制,恰是因为这两种机制的存在,才付与了Java壮大的面向对象才能。abstractclass和interface之间在关于笼统类界说的撑持方面具有很年夜的类似性,乃至能够互相交换,因而良多开辟者在举行笼统类界说时关于abstractclass和interface的选择显得对照随便。实在,二者之间仍是有很年夜的区分的,关于它们的选择乃至反应出关于成绩范畴实质的了解、关于计划企图的了解是不是准确、公道。本文将对它们之间的区分举行一番分析,试图给开辟者供应一个在两者之间举行选择的根据。
了解笼统类 
在面向对象的观点中,我们晓得一切的对象都是经由过程类来刻画的,可是反过去却不是如许。并非一切的类都是用来刻画对象的,假如一个类中没有包括充足的信息来刻画一个详细的对象,如许的类就是笼统类。笼统类常常用来表征我们在对成绩范畴举行剖析、计划中得出的笼统观点,是对一系列看上往分歧,可是实质上不异的详细观点的笼统。好比:假如我们举行一个图形编纂软件的开辟,就会发明成绩范畴存在着圆、三角形如许一些详细观点,它们是分歧的,可是它们又都属于外形如许一个观点,外形这个观点在成绩范畴是不存在的,它就是一个笼统观点。恰是由于笼统的观点在成绩范畴没有对应的详细观点,以是用以表征笼统观点的笼统类是不克不及够实例化的。上面从三个方面举行对照:
1、从语法界说层面看abstractclass和interface
在语法层面,Java言语关于abstractclass和interface给出了分歧的界说体例,上面以界说一个名为Demo的笼统类为例来讲明这类分歧。
利用abstractclass的体例界说Demo笼统类的体例以下:
abstractclassDemo{
abstractvoidmethod1();
abstractvoidmethod2();


利用interface的体例界说Demo笼统类的体例以下:
interfaceDemo{
voidmethod1();
voidmethod2();

}
在abstractclass体例中,Demo能够有本人的数据成员,也能够有非abstarct的成员办法,而在interface体例的完成中,Demo只可以有静态的不克不及被修正的数据成员(也就是必需是staticfinal的,不外在interface中一样平常不界说数据成员),一切的成员办法都是abstract的。从某种意义上说,interface是一种特别情势的abstractclass。
2、从编程层面看abstractclass和interface
从编程的角度来看,abstractclass和interface都能够用来完成"designbycontract"的头脑。可是在详细的利用下面仍是有一些区分的。
起首,abstractclass在Java言语中暗示的是一种承继干系,一个类只能利用一次承继干系。可是,一个类却能够完成多个interface。大概,这是Java言语的计划者在思索Java关于多重承继的撑持方面的一种折衷思索吧。
其次,在abstractclass的界说中,我们能够付与办法的默许举动。可是在interface的界说中,办法却不克不及具有默许举动,为了绕过这个限定,必需利用托付,可是这会增添一些庞大性,偶然会形成很年夜的贫苦。
在笼统类中不克不及界说默许举动还存在另外一个对照严峻的成绩,那就是大概会形成保护上的贫苦。由于假如厥后想修正类的界面(一样平常经由过程abstractclass大概interface来暗示)以顺应新的情形(好比,增加新的办法大概给已用的办法中增加新的参数)时,就会十分的贫苦,大概要消费良多的工夫(关于派生类良多的情形,尤其云云)。可是假如界面是经由过程abstractclass来完成的,那末大概就只必要修正界说在abstractclass中的默许举动就能够了。
一样,假如不克不及在笼统类中界说默许举动,就会招致一样的办法完成呈现在该笼统类的每个派生类中,违背了"onerule,oneplace"准绳,形成代码反复,一样倒霉于今后的保护。因而,在abstractclass和interface间举行选择时要十分的当心。
3、从计划理念层面看abstractclass和interface
下面次要从语法界说和编程的角度叙述了abstractclass和interface的区分,这些层面的区分是对照低条理的、非实质的。本大节将从另外一个层面:abstractclass和interface所反应出的计划理念,来剖析一下两者的区分。作者以为,从这个层面举行剖析才干了解两者观点的实质地点。
后面已提到过,abstarctclass在Java言语中表现了一种承继干系,要想使得承继干系公道,父类和派生类之间必需存在"isa"干系,即父类和派生类在观点实质上应当是不异的(参考文献〔3〕中有关于"isa"干系的年夜篇幅深切的叙述,有乐趣的读者能够参考)。关于interface来讲则否则,其实不请求interface的完成者和interface界说在观点实质上是分歧的,仅仅是完成了interface界说的左券罢了。为了使叙述便于了解,上面将经由过程一个复杂的实例举行申明。
思索如许一个例子,假定在我们的成绩范畴中有一个关于Door的笼统观点,该Door具有实行两个举措open和close,此时我们能够经由过程abstractclass大概interface来界说一个暗示该笼统观点的范例,界说体例分离以下所示:
利用abstractclass体例界说Door:
abstractclassDoor{
abstractvoidopen();
abstractvoidclose();
}
利用interface体例界说Door:
interfaceDoor{
voidopen();
voidclose();
}
<p>
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net网页编程,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
再现理想 该用户已被删除
沙发
发表于 2015-1-21 09:52:24 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
因胸联盟 该用户已被删除
板凳
发表于 2015-1-25 19:13:35 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
柔情似水 该用户已被删除
地板
发表于 2015-2-2 22:07:22 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
若相依 该用户已被删除
5#
发表于 2015-2-8 09:58:18 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
山那边是海 该用户已被删除
6#
发表于 2015-2-15 22:15:51 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
莫相离 该用户已被删除
7#
发表于 2015-2-26 21:33:07 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-1 17:48:45 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
admin 该用户已被删除
9#
发表于 2015-3-10 21:34:22 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
再见西城 该用户已被删除
10#
发表于 2015-3-17 10:28:04 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
变相怪杰 该用户已被删除
11#
发表于 2015-3-19 18:45:43 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
飘飘悠悠 该用户已被删除
12#
发表于 2015-3-31 11:40:14 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
13#
发表于 2015-4-6 22:52:39 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
乐观 该用户已被删除
14#
发表于 2015-4-8 10:53:04 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
不帅 该用户已被删除
15#
发表于 2015-4-12 05:44:05 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
谁可相欹 该用户已被删除
16#
发表于 2015-4-17 00:52:45 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
愤怒的大鸟 该用户已被删除
17#
发表于 2015-4-20 22:46:27 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
第二个灵魂 该用户已被删除
18#
发表于 2015-4-27 08:35:34 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
飘灵儿 该用户已被删除
19#
发表于 2015-4-30 09:55:16 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
透明 该用户已被删除
20#
发表于 2015-4-30 21:04:43 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-18 19:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表