Objective-C-class (static) method, instance method, overwrite, and Property Review

Source: Internet
Author: User

First define a human parent class

Definition:

1234567891011121314151617181920 ////  Human.h//  OOP////  Created by jimmy.yang on 11-2-9.//  Copyright 2011 __MyCompanyName__. All rights reserved.// #import <Foundation/Foundation.h>@interface Human : NSObject {    BOOL sex;} +(void) toString; -(void) showSex; @end

Note: the plus sign before + (void) indicates that this is a class method (static method), and-(void) indicates that this is an instance method.

Implementation:

Note: The following-(ID) Init is the constructor. Correspondingly, there is also a-(void) dealloc method to release resources (similar to the Destructor or the dispose () method in C #)-note: the dealloc method will be detailed in memory management.

123456789101112131415161718192021222324252627282930313233343536 ////  Human.m//  OOP////  Created by jimmy.yang on 11-2-9.//  Copyright 2011 __MyCompanyName__. All rights reserved.// #import "Human.h"@implementation Human // Constructor-(id) init{    NSLog(@"init() in Human is called");    sex = TRUE;    return(self);} // Static method+ (void)toString{    NSLog(@"this is a class method of Human");}// Instance method- (void)showSex{    NSLog(@"my sex is %@",[email protected]"MALE":@"FEMALE");}@end

Define a woman subclass.

Definition:

1234567891011121314151617181920212223 ////  Woman.h//  OOP////  Created by jimmy.yang on 11-2-9.//  Copyright 2011 __MyCompanyName__. All rights reserved.// #import <Foundation/Foundation.h>#import "Human.h"@interface Woman : Human {    BOOL married;} -(void) canCook:(NSString*) foodName; -(void) setMarried:(BOOL)m; -(BOOL) Married; @end

Implementation:

Note the following: setmarried and married are standard attributes in obj-C (of course, other simplified attributes can be viewed later)

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 ////  Woman.m//  OOP////  Created by jimmy.yang on 11-2-9.//  Copyright 2011 __MyCompanyName__. All rights reserved.// #import "Woman.h"@implementation Woman // Woman class Constructor-(id) init{    NSLog(@"init() in Woman is called!");    if (self==[super init]){        sex = FALSE;        married = FALSE;    }    return (self);} // Overwrite tostring () in the parent class ()+(void)toString{    NSLog(@"This is Woman‘s ToString()");} // Woman can cook-(void)canCook:(NSString*) foodName{    NSLog(@"I can cook %@",foodName);} // Setter of the attribute-(void) setMarried:(BOOL)m{    married = m;} // Getter of the attribute-(BOOL) Married{    return married;} @end

Call in the main method:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 #import <Foundation/Foundation.h>#import "Human.h"#import "Woman.h" int main (int argc, const char * argv[]) {    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];     // insert code here...    NSLog(@"Hello, World!");         // Call the "static" method of the class    [Human toString];         NSLog(@"----------------");         // Create a human instance    Human *man = [Human new];         // Call man's showsex Method    [man showSex];         NSLog(@"----------------");         // Define a woman subclass instance    Woman *wife = [Woman new];    [wife canCook:@"Rice"];         // Call the method inherited from the parent class    [wife showSex];         // Set attributes    [wife setMarried:TRUE];         // Read the attribute value    NSLog(@"wife‘s married = %@",wife.Married==NO[email protected]"FALSE":@"TRUE");         NSLog(@"----------------");         // Call the tostring method after Overwrite    [Woman toString];              // Common methods in the factory mode, which are still applicable here (except that 'human 'may not respond to'-cancook: 'will be warned during compilation :')    Human *wife2 = [Woman new];    [wife2 canCook:@"soap"];                   NSLog(@"----------------");         [pool drain];    return 0;}

Running result:

17:01:02. 016 OOP [1725: a0f] Hello, world!
17:01:02. 053 OOP [1725: a0f] This is a class Method of Human
17:01:02. 062 OOP [1725: a0f] ----------------
17:01:02. 075 OOP [1725: a0f] Init () in human is called
17:01:02. 091 OOP [1725: a0f] My sex is male
17:01:02. 094 OOP [1725: a0f] ----------------
17:01:02. 099 OOP [1725: a0f] Init () in woman is called!
17:01:02. 104 OOP [1725: a0f] Init () in human is called
17:01:02. 105 OOP [1725: a0f] I can cook rice
17:01:02. 108 OOP [1725: a0f] My sex is female
17:01:02. 109 OOP [1725: a0f] Wife's married = true
17:01:02. 111 OOP [1725: a0f] ----------------
17:01:02. 116 OOP [1725: a0f] This is woman's tostring ()
17:01:02. 120 OOP [1725: a0f] Init () in woman is called!
17:01:02. 121 OOP [1725: a0f] Init () in human is called
17:01:02. 123 OOP [1725: a0f] I can cook soap
17:01:02. 125 OOP [1725: a0f] ----------------

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.