`
gkuiyj
  • 浏览: 90769 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Objective-C个人学习系列(5) 面向对象(封装、继承、多态)

 
阅读更多

 

//get set 方法就是一个封装的案例

//不是将变量设置成public,而是将变量封装,通过get、set方法来访问

 

//类的继承------------------------------------------------

#import <Foundation/Foundation.h>

//定义父类

@interface Animal : NSObject{

    

    int weight;

    @privateint age;

    @protectedint sex;

    @public int type;

    

}

@property int age ,weight,sex,type;

 

-(id)init;

-(void)move;

 

 

@end

 

#import "Animal.h"

 

@implementation Animal

 

@synthesize age,sex,type,weight;

 

-(id)init{

    self = [super init];

    if (self!=nil) {

        

        self.age = 25;

        self.sex = 1;

        self.type = 3;

        self.weight = 50;

    }

    returnself;

}

-(void)move{

    NSLog(@"Animal move !");

}

 

@end

 

#import "Animal.h"

//定义子类,继承父类Animal

@interface Dog : Animal{   

    int color;

    int kind;

}

@property int color,kind;

 

-(id)init;

-(void)keepDoor;

-(void)move;

-(void)play;

 

@end

#import "Dog.h"

#import "Animal.h"

 

@implementation Dog

 

@synthesize color,kind;

 

-(id)init{

    //self 指向自身(当前的实例对象)的指针对象,

    //super 指向父类对象的指针

    self = [superinit];    //子类重写init时必须先初始化父类

    if (self) {

        self.kind = 1;

        self.color = 20;

    }

    returnself;

}

-(void)keepDoor{

    color = 100;

    kind = 2;

    

    //继承父类的实例变量

    type = 4;

    sex = 1;

    //age = 5;    //父类中为private

    weight = 60;

    

    NSLog(@"I can Keep You Door!");

}

 

-(void)move{

    

    NSLog(@"I can run speed!");

}

 

-(void)play{

    

}

 

@end

 

//--------多态---------------

/**

 使用不同的类共享相同的方法名称的能力称为多态。

 多态中的一组类,每个都能响应相同的一个方法名,每个类中定义的该方法都封装了不同都操作,

 编译器在编译时不会去检查对象的类型,在运行时才会确定具体的类,并找到其方法调用,

 如果子类没有该方法,则调用父类的方法。(参考动态类型、动态绑定)

 <多态的三个前提条件:继承、重写、父类引用指向子类对象。>

 

 **/

 

#import <Foundation/Foundation.h>

//定义父类

@interface Animal : NSObject

-(void)move;

 

@end

 

#import "Animal.h"

 

@implementation Animal

-(void)move{

    NSLog(@"Animal Move 111");

}

 

@end

 

#import "Animal.h"

//定义子类,继承父类

@interface Dog : Animal

 

-(void)move;

 

@end

 

#import "Dog.h"

 

@implementation Dog

//重写父类方法

-(void)move{

    NSLog(@"Dog move 222");

}

 

@end

 

 

#import <Foundation/Foundation.h>

#import "Animal.h"

#import "Dog.h"

#import "Cat.h"

 

int main(int argc, const char * argv[])

{

 

    @autoreleasepool {

 

        Animal *a =[[Dog alloc]init]; //父类引用指向子类对象

        [a move];           //Output:Dog move 222  此处调用的子类方法

        

        //oc中id类型是个特殊的多态用法

        NSMutableArray* arr = [[NSMutableArrayalloc]init];

        //将不同的类用id类型存储到数组

        for (int i = 0; i<5; i++) {

            id pid = nil;

            if (i%2==0) {

                NSString* s = @"abc";

                pid = s;

            }else{

                NSNumber *n = [NSNumber numberWithInt:i];

                pid = n;

            }

            [arr addObject:pid];

        }

        

        

        for (int i = 0; i < 5; i++) {

            id p = arr[i];

            NSLog(@"%@",p);         //该处调用父类的description方法

        }

        

    }

    

 

 

}

 

分享到:
评论

相关推荐

    Objective-c语言学习-快速入门完整版完整版

    "第四讲 Objective-C语言的面向对象特性"深入探讨了类、对象、继承、封装和多态等面向对象编程的核心概念。Objective-C的类定义了对象的行为和属性,而对象是类的实例;继承允许子类继承父类的特性;封装确保数据的...

    objective-c 面向对象编程

    Objective-C是一种基于C语言的面向对象编程(OOP)语言,尤其在苹果的iOS和macOS开发中占据核心地位。它的设计目标是扩展C语言,使其支持类、消息传递和其他面向对象特性。以下是对Objective-C面向对象编程的详细...

    基于Objective-C的面向对象编程

    Objective-C是苹果公司开发的一种面向对象的编程语言,它是C语言的超集,增加了Smalltalk风格的消息传递机制。Objective-C在iOS和macOS开发中扮演着核心角色,是构建Apple生态系统应用的主要语言。 在"基于...

    Objective-C程序设计 第6版 pdf

    2. **面向对象编程**:Objective-C是面向对象的语言,它支持类、继承、封装和多态等概念。书中会详细阐述如何定义类、创建对象,以及如何使用继承来构建类的层次结构。 3. **Foundation框架**:这是iOS和macOS开发...

    Objective-C与Objective-C++的混用代码示例

    4. **面向对象编程**:C++的面向对象特性,如封装、继承和多态,可以增强Objective-C的编程能力。 ### 混用示例 在Objective-C++项目中,你可能会看到类似这样的代码: ```objc // Objective-C部分 @interface ...

    《Objective-C基础教程》中文版(含源代码)

    2. **面向对象编程基础**:讲解类、对象、继承、多态和封装等面向对象编程的核心概念,帮助读者理解如何通过这些概念构建复杂的软件结构。 3. **Objective-C语法**:深入解析Objective-C的语法特性,如消息传递、...

    Object-C语言,用C语言实现面向对象

    学习Objective-C需要理解C语言的基础,然后深入研究Objective-C的面向对象特性。通过阅读Apple的官方文档、教程和开源代码,可以逐步掌握Objective-C的使用。实践是提升技能的关键,参与实际项目或创建小型应用是...

    Objective-C - Learning Objective-C 2.0 Second Edition

    第三章《An Introduction to Object-Oriented Programming》介绍了面向对象编程(OOP)的基本原理,包括类、对象、继承、封装、多态等核心概念。通过本章的学习,读者可以了解到面向对象编程的优势,并学会如何使用...

    Objective-C基础教程(Learn Objective-C)随书源码下载

    面向对象编程(OOP)的核心概念包括类、对象、继承、封装和多态。Objective-C通过消息传递机制实现了这些概念,使得代码更加模块化和可维护。 2. **类与对象**: 类是对象的蓝图,定义了对象的属性(ivar,实例...

    object-c语言教程及其经典案例.zip

    学习面向对象编程概念:理解类、对象、继承、封装和多态等面向对象编程的基本概念是学习Objective-C的关键。 学习Objective-C语法:熟悉Objective-C的语法结构,如类定义、方法声明和调用、消息传递机制等。 实践...

    基于 Objective-C 的面向对象编程 中文

    面向对象编程的核心概念包括封装、继承和多态,这些在Objective-C中都有明确的体现。 1. **封装**:Objective-C通过类和实例变量来实现数据和方法的封装,确保内部状态的安全性,同时提供了外部可以访问的方法接口...

    objective-c基础教程第2版.pdf

    Objective-C是一种面向对象的编程语言,它是C语言的扩展,最初由Brad Cox在20世纪80年代开发,并且广泛应用于Mac OS X和iOS的应用程序开发中。Objective-C在C语言的基础上增加了Smalltalk风格的消息传递机制,允许...

    Objective-C程序设计 第6版 PDF

    - **第3章:面向对象编程基础**:介绍面向对象编程的基本原理,如封装、继承、多态等。 #### 第二部分:Objective-C核心特性 - **第4章:类与对象**:深入探讨Objective-C中的类定义、对象创建以及类与对象之间的...

    Object-Oriented Programming with Objective-C

    标题“面向对象编程与Objective-C”直接指出了文章的主要内容:通过Objective-C语言来介绍面向对象编程(Object-Oriented Programming,简称OOP)的基本概念和技术。Objective-C是一种通用、面向对象的编程语言,由...

    Objective-C(简称ObjC)是一门基于C语言的面向对象编程语言

    面向对象编程,包括类、继承、封装和多态等特性。 运行时特性,如动态类型、动态绑定和反射等。 强大的框架支持,如Cocoa框架,为MacOS和iOS开发提供丰富的API。 2. 基本语法 头文件与源文件:Objective-C的文件分为...

Global site tag (gtag.js) - Google Analytics