91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

objective-c 學習筆記- 繼承、重寫、虛方法

發布時間:2020-08-06 13:27:33 來源:網絡 閱讀:253 作者:wobuaishangdiao 欄目:開發技術
繼承 子類 可以繼承父類的方法,從而實現子類可以利用父類的方法, 重寫 是 子類可以重寫父類的方法,這樣子類的這個方法將覆蓋掉父類的方法。 虛方法 使用時 可以通過父類的指針指向子類對象,從而子類對象到父類的引用。
父類的實現
#import<Foundation/Foundation.h>

@interfacefather :NSObject
{
@private
inta;

@protected
intb;

@public
intc;
int_age;
}

- (
id) init;
- (
void) setA:(int)newa;
- (
int) getA;
- (
void) setage:(int)newage;
- (
void) printage;
- (
void) jump;  //定義一個虛方法,在子類中進行實現。

@end

#import"father.h"

@implementation father

- (id) init
{
   if (self = [super init])
   {
b = 4;
c = 5;
   }
   return self;
}

- (void) setA:(int)newa  //這兩個就可以作為私有變量的橋梁了
{
a = newa;
}

- (int) getA  
{
   return a;
}

- (void) setage:(int)newage
{
_age = newage;
}

- (void) printage
{
NSLog(@"the age is %d", _age);
}

- (void) jump
{
   return;
}


- (NSString *) description  //后續在子類的方法中會有該方法的重寫
{

NSString *descrip = [[NSStringalloc] initWithFormat:@"the valuable is a = %d, b = %d, c = %d", a, b, c];

   return ([descrip autorelease]);
}

@end

子類繼承的實現
#import<Foundation/Foundation.h>
#import
"father.h"

@interfaceson :father
{
intd;
inte;
}

- (
id) init;

@end

#import"son.h"

@implementation son
- (id) init
{
   if (self = [super init])
   {
d = 49;
e = 59;
   }
   return self;
}

- (void) jump
{
NSLog(@"the son is jump tall");
   return;
}

- (NSString *) description   //子類的重寫,這樣就會將父類的方法進行覆蓋
{
// [self description];
   int newa =  [super getA];   //這里應該用父類的一個調用,而不應該僅僅是getA
NSString * str = [[NSStringalloc] initWithFormat:@"a = %d, b = %d, c = %d, d = %d, e = %d", newa, b, c, d, e];

   return ([str autorelease]);
}

@end



#import"father.h"

@interface doughter : father

@end

#import"doughter.h"

@implementation doughter
- (void) jump
{
NSLog(@"the doughter is jump down");
   return;
}

@end

主程序的實現:這里jump即為虛方法:
#import<Foundation/Foundation.h>
#import
"father.h"
#import
"son.h"
#import
"doughter.h"

intmain(intargc,constchar* argv[])
{

@autoreleasepool{

// insert code here...
NSLog(@"Hello, World!");

father*fat = [[fatheralloc]init];

NSLog(@"%@", fat);

       [fat
setA:6];
NSLog(@"%@", fat);


son*so = [[sonalloc]init];
NSLog(@"the son is %@", so);
       [so
setA:10];   //子類繼承了父類的setA方法,直接進行使用

NSLog(@"the father is %@", fat);
NSLog(@"the newson is %@", so);  //這里用到了description方法,對father父類方法進行了重寫覆蓋
       [so
setage:13];
       [so
printage];  //子類繼承了父類的setA方法,直接進行使用

//虛方法的使用
//調用方法時不看指針看對象,
//由于父類的指針可以指向子類的對象,也即子類對象指向父類引用
father*fatson = [[sonalloc]init];
       [fatson
jump];

father*fatdoughter = [[doughteralloc]init];
       [fatdoughter
jump];



       [fat
release];
       [so
release];
       [fatson
release];
       [fatdoughter
release];
   }
return0;
}


運行結果:
2014-03-20 22:12:20.480集成[1270:403] Hello, World!
2014-03-20 22:12:20.484
集成[1270:403] the valuable is a = 0, b = 4, c = 5
2014-03-20 22:12:20.486
集成[1270:403] the valuable is a = 6, b = 4, c = 5
2014-03-20 22:12:20.486
集成[1270:403] the son is a = 0, b = 4, c = 5, d = 49, e = 59
2014-03-20 22:12:20.487
集成[1270:403] the father is the valuable is a = 6, b = 4, c = 5
2014-03-20 22:12:20.488
集成[1270:403] the newson is a = 10, b = 4, c = 5, d = 49, e = 59
2014-03-20 22:12:20.489
集成[1270:403] the age is 13
2014-03-20 22:12:20.489
集成[1270:403] the son is jump tall
2014-03-20 22:12:20.490
集成[1270:403] the doughter is jump down


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三原县| 太白县| 铜梁县| 沧源| 南川市| 濮阳县| 兰西县| 棋牌| 平南县| 灵丘县| 日土县| 乌拉特后旗| 明水县| 封开县| 印江| 武城县| 邻水| 卢龙县| 图片| 家居| 昌平区| 襄汾县| 修水县| 宜章县| 武鸣县| 龙口市| 奈曼旗| 威宁| 泸州市| 璧山县| 泰兴市| 玛沁县| 普格县| 廊坊市| 乌什县| 丽水市| 昌吉市| 望江县| 洛扎县| 徐水县| 江门市|