Java中應該是沒有提供相關的機制,但是Java可以通過動態代理來實現AOP,在切入點前後執行代碼邏輯,個人認為比OC還要方便。
// // Girl.h // 10_Category // // Created by apple on 14/12/23. // Copyright (c) 2014年 cc. All rights reserved. // #import@interface Girl : NSObject //顯示MM的中文名 - (NSString*)showEnglishName; @end // // Girl.m // 10_Category // // Created by apple on 14/12/23. // Copyright (c) 2014年 cc. All rights reserved. // #import "Girl.h" @implementation Girl - (NSString*)showEnglishName { return @"mm"; } @end // // Girl+GirlCategory.h // 10_Category // // Created by apple on 14/12/23. // Copyright (c) 2014年 cc. All rights reserved. // #import "Girl.h" //OC分類的頭文件 //命名規范 基類+分類名.h/.m //格式 @interface 基類 (分類) //分類的作用:在不修改基類源文件的基礎上,為基類動態的擴展方法 //通過分類Category可以在不修改OC或者IOS框架的源碼基礎上為這些類增加一些擴展方法 //分類並非子類繼承的方式,而是直接對基類進行擴展 @interface Girl (GirlCategory) //給Girl類增加一個顯示中文名字的方法 - (NSString*)showChineseName; @end // // Girl+GirlCategory.m // 10_Category // // Created by apple on 14/12/23. // Copyright (c) 2014年 cc. All rights reserved. // #import "Girl+GirlCategory.h" @implementation Girl (GirlCategory) - (NSString*)showChineseName { return @"美眉"; } @end // // main.m // 10_Category // // Created by apple on 14/12/23. // Copyright (c) 2014年 cc. All rights reserved. // #import #include "Girl.h" #include "Girl+GirlCategory.h" int main(int argc, const char * argv[]) { @autoreleasepool { Girl* pGirl = [[Girl alloc] init]; //Girl基類中定義的方法 NSLog(pGirl.showEnglishName); //GirlCategory分類中擴展的方法 NSLog(pGirl.showChineseName); } return 0; }