设为首页 加入收藏

TOP

Objective-C 继承和多态(一)
2017-10-11 17:46:14 】 浏览:7978
Tags:Objective-C 继承

  学习Java我们知道类有三大特征,封装,继承,多态.而在Objective-C中也有继承的概念,今天就来看看Objective-C中的继承和多态.

  首先,我们来看看示例代码:

//Animal.h
#import <Foundation/Foundation.h>
 
@interface Animal : NSObject
{
	int food_consumption; //食量
	int count; //数量
	int parturition_days; //生产周期
}

-(int)count;

-(void)setCount:(int)c;

-(int)foodConsumption;

-(void)setFoodConsumption:(int)food_c;

-(int)parturitionDays;

-(void)setParturitionDays:(int)parturition_day;

@end

 

//Animal.m
#import "Animal.h"

@implementation Animal

-(int)count{
	return count;
}

-(void)setCount:(int)c{
	count = c;
}

-(int)foodConsumption{
	return food_consumption;
}

-(void)setFoodConsumption:(int)food_c{
	food_consumption = food_c;
}

-(int)parturitionDays{
	return parturition_days;
}

-(void)setParturitionDays:(int)parturition_day{
	parturition_days = parturition_day;
}
 
@end

 

//Panda.h
#import "Animal.h"
 
@interface Panda : Animal

@end

 

//Panda.m
#import "Panda.h"

@implementation Panda

@end

 

//Tool.h
#import <Foundation/Foundation.h>
#import "Animal.h"
#import "Panda.h"

@interface Tool : NSObject

+(void) initWithAnimalDictionary:(Animal *)animal andDict:(NSDictionary *)dict;

@end

 

//Tool.m
#import "Tool.h"

@implementation Tool

+(void) initWithAnimalDictionary:(Animal *)animal andDict:(NSDictionary *)dict{
    NSDictionary *animalDict;
    if(YES == [animal isKindOfClass:[Panda class]]){
        animalDict = [dict objectForKey:@"Panda"];
        
    }else{
        NSLog(@"error class!");
    }
    [animal setCount:[[animalDict objectForKey:@"count"] intValue]];
    [animal setFoodConsumption:[[animalDict objectForKey:@"food_consumption"] intValue]];
    [animal setParturitionDays:[[animalDict objectForKey:@"parturition_days"] intValue]];
}

@end

 

 data.plist文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>fodder</key>
	<dict>
		<key>count_num</key>
		<string>1024</string>
	</dict>
	<key>Panda</key>
	<dict>
		<key>food_consumption</key>
		<string>2</string>
		<key>count</key>
		<string>6</string>
		<key>parturition_days</key>
		<string>76</string>
	</dict>
</dict>
</plist>

 

//main.m
#import <Foundation/Foundation.h>
#import "Tool.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        Panda *panda = [[Panda alloc] init];
    
        //读取plist
        NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
        NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    
        [Tool initWithAn
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇`~!$^*()[]{}\|;:'",<.. 下一篇iOS使用阿里云OSS对象存储 (SDK ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目