[#0x0010] interface

本文探讨了Java中接口(interface)与抽象类(abstract class)的主要区别,包括默认属性、方法实现要求、字段特性及向上转型等内容,并附带了一些额外说明。

  我们大可将interface视为abstract class的延伸。

  首先,interface默认具有abstract属性,所以你不能new一个interface。

  其次,interface中的方法默认为public。由[#0x000E] 可知,如果一个imp class实现了一个interface(相当于一个ext class继承了一个base class),那么imp class中对interface中声明方法的实现(相当于是覆写方法)也必须是public。

  再次,interface中的field默认为public + static + final,但不能为blank final,即必须初始化。

  还有,和abstract class一样,interface支持向上转型,即原来对一般base class的向上转型用法对interface同样适用。

 

p.s. 如果abstract class或是interface声明为public,则必须与.java文件同名,这一点与一般的public class无异。

 

2011-10-31 补充:

  interface中的方法你可以看成是abstract,但是不能声明为abstract

 

2012-04-10 补充:

  interface中的方法不能是static

用户升级ios26系统, 使用过程中LSSafeProtector这个第三方库的NSNotificationCenter报错, 如何解决, 中文方式说明, 下面是报错的方法以及错误信息 -(void)safe_addObserver:(id)observer selector:(SEL)aSelector name:(NSNotificationName)aName object:(id)anObject { [observer setIsNotification:YES]; [observer safe_changeDidDeallocSignal]; [self safe_addObserver:observer selector:aSelector name:aName object:anObject]; } #0 0x00000002478cc0cc in __pthread_kill () #1 0x00000001fa931810 in pthread_kill () #2 0x00000001ab154f1c in abort () #3 0x000000019cc43f60 in swift::fatalErrorv () #4 0x000000019cc43f80 in swift::fatalError () #5 0x000000019ccb19e4 in -[_TtCs12_SwiftObject doesNotRecognizeSelector:] () #6 0x000000019fb1f4f8 in ___forwarding___ () #7 0x000000019fb273a0 in _CF_forwarding_prep_0 () #8 0x000000010ea4db04 in -[NSNotificationCenter(Safe) safe_addObserver:selector:name:object:] at /Users/clouder/xiaohui-ios/powerone/3rdParty/LSSafeProtector/Foundation/NSNotificationCenter+Safe.m:103 #9 0x00000001a55f5e70 in ___lldb_unnamed_symbol297340 () #10 0x00000001a544dc4c in ___lldb_unnamed_symbol294151 () #11 0x00000001a544db1c in ___lldb_unnamed_symbol294149 () #12 0x00000001a54512b4 in ___lldb_unnamed_symbol294184 () #13 0x00000001a53eb2e4 in ___lldb_unnamed_symbol293679 () #14 0x00000001a544d39c in -[_UIAppCACommitFuture _invoke] () #15 0x00000001a05485bc in CA::Transaction::run_commit_handlers () #16 0x00000001a05090ac in CA::Context::commit_transaction () #17 0x00000001a0533ab0 in CA::Transaction::commit () #18 0x00000001a05413c0 in CA::Transaction::flush_as_runloop_observer () #19 0x00000001a543f0f0 in _UIApplicationFlushCATransaction () #20 0x00000001a543f024 in __setupUpdateSequence_block_invoke_2 () #21 0x00000001a544cee8 in _UIUpdateSequenceRunNext () #22 0x00000001a544c378 in schedulerStepScheduledMainSectionContinue () #23 0x0000000289db35f8 in UC::DriverCore::continueProcessing () #24 0x000000019fb43230 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ () #25 0x000000019fb431a4 in __CFRunLoopDoSource0 () #26 0x000000019fb20c6c in __CFRunLoopDoSources0 () #27 0x000000019faf68b0 in __CFRunLoopRun () #28 0x000000019faf5c44 in _CFRunLoopRunSpecificWithOptions () #29 0x000000023eec6498 in GSEventRunModal () #30 0x00000001a5470ddc in -[UIApplication _run] () #31 0x00000001a5415b0c in UIApplicationMain ()
09-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值