Objective-C Inheritance,objective-c

來源:互聯網
上載者:User

Objective-C Inheritance,objective-c

One of the most important concepts in object-oriented programming is that of inheritance. Inheritance allows us to define a class in terms of another class which makes it easier to create and maintain an application. This also provides an opportunity to reuse the code functionality and fast implementation time.

When creating a class, instead of writing completely new data members and member functions, the programmer can designate that the new class should inherit the members of an existing class. This existing class is called the baseclass, and the new class is referred to as the derived class.

The idea of inheritance implements the is a relationship. For example, mammal IS-A animal, dog IS-A mammal, hence dog IS-A animal as well and so on.

Base & Derived Classes:

Objective-C allows only multilevel inheritance, i.e., it can have only one base class but allows multilevel inheritance. All classes in Objective-C is derived from the superclass NSObject.

@interface derived-class: base-class

Consider a base class Person and its derived class Employee as follows:

#import <Foundation/Foundation.h> @interface Person : NSObject{    NSString *personName;    NSInteger personAge;}- (id)initWithName:(NSString *)name andAge:(NSInteger)age;- (void)print;@end@implementation Person- (id)initWithName:(NSString *)name andAge:(NSInteger)age{    personName = name;    personAge = age;    return self;}- (void)print{    NSLog(@"Name: %@", personName);    NSLog(@"Age: %ld", personAge);}@end@interface Employee : Person{    NSString *employeeEducation;}- (id)initWithName:(NSString *)name andAge:(NSInteger)age   andEducation:(NSString *)education;- (void)print;@end@implementation Employee- (id)initWithName:(NSString *)name andAge:(NSInteger)age   andEducation: (NSString *)education  {    personName = name;    personAge = age;    employeeEducation = education;    return self;}- (void)print{    NSLog(@"Name: %@", personName);    NSLog(@"Age: %ld", personAge);    NSLog(@"Education: %@", employeeEducation);}@endint main(int argc, const char * argv[]){    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];            NSLog(@"Base class Person Object");    Person *person = [[Person alloc]initWithName:@"Raj" andAge:5];    [person print];    NSLog(@"Inherited Class Employee Object");    Employee *employee = [[Employee alloc]initWithName:@"Raj"     andAge:5 andEducation:@"MBA"];    [employee print];            [pool drain];    return 0;}

When the above code is compiled and executed, it produces the following result:

2013-09-22 21:20:09.842 Inheritance[349:303] Base class Person Object2013-09-22 21:20:09.844 Inheritance[349:303] Name: Raj2013-09-22 21:20:09.844 Inheritance[349:303] Age: 52013-09-22 21:20:09.845 Inheritance[349:303] Inherited Class Employee Object2013-09-22 21:20:09.845 Inheritance[349:303] Name: Raj2013-09-22 21:20:09.846 Inheritance[349:303] Age: 52013-09-22 21:20:09.846 Inheritance[349:303] Education: MBA
Access Control and Inheritance:

A derived class can access all the private members of its base class if it's defined in the interface class, but it cannot access private members that are defined in the implementation file.

We can summarize the different access types according to who can access them in the following way: 

A derived class inherits all base class methods and variables with the following exceptions:

  • Variables declared in implementation file with the help of extensions is not accessible.

  • Methods declared in implementation file with the help of extensions is not accessible.

  • In case the inherited class implements the method in base class, then the method in derived class is executed.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.