多态

 1、没有继承就没有多态

 2、代码体现:父类类型的指针指向子类对象

类的创建:

 #import <Foundation/Foundation.h>

 // 动物
@interface Animal : NSObject
- (void)eat;
@end @implementation Animal
- (void)eat {
NSLog(@"Animal-吃东西...");
}
@end // 狗
@interface Dog : Animal
- (void)run;
@end @implementation Dog - (void)eat {
NSLog(@"Dog-吃东西...");
}
@end // 猫
@interface Cat : Animal
@end @implementation Cat
- (void)eat {
NSLog(@"Cat-吃东西...");
}
@end

多态的实现:

int main() {
// 多态:父类指针指向子类对象
Animal *a = [Dog new]; // 调用方法时会动态检测对象的真实形象
[a eat]; return ;
}

  系统在调用方法时,会动态检测对象的真实形象

 3.好处:如果函数/方法参数中使用的父类类型,可以传入父类、子类对象,用于整合相似的函数

 4.局限性

父类类型的指针变量 不能 直接调用子类特有的方法,必须强转为子类类型后,才能直接调用。虽然能够成功,但是编程规范不提倡

NSString

 #import <Foundation/Foundation.h>

 int main() {

     NSString *str = @"itcast";
NSLog(@"%@", str);// %@ 是NSString类型的占位符 int age = ;
int no = ; NSString *name = @"哈哈jack";
int size = [name length]; // length方法计算的是字数 NSLog(@"%d", size); // 创建OC字符串的另一种方式
NSString *newStr = [NSString stringWithFormat:@"My age is %d and no is %d and name is %@", age, no, name]; //stringWithFormat方法是转化字符串的格式 NSLog(@"%@", newStr);
NSLog(@"%ld", [newStr length]); NSLog(@"My age is %d and no is %d and name is %@", age, no, name); return ;
}

 %@ 是所有对象类型的占位符,也是NSString类型的占位符

 length方法是NSString中的一个对象方法( - ),主要用于计算字符串的字数

 stringWithFormat方法是NSString中的一个类方法( + ),主要是转换字符串的格式,用于创建OC字符串

iOS之07-三大特性之多态 + NSString类的更多相关文章

  1. JAVA三大特性之多态

    面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据 ...

  2. java-----理解java的三大特性之多态

    的java提高篇(四)-----理解的java的三大特性之多态 面向对象编程有三大特性:封装,继承,多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外 ...

  3. [转]理解java的三大特性之多态

    java提高篇(四)-----理解java的三大特性之多态   面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外 ...

  4. C++三大特性之多态

    原文地址:https://qunxinghu.github.io/2016/09/08/C++%20%E4%B8%89%E5%A4%A7%E7%89%B9%E6%80%A7%E4%B9%8B%E5%A ...

  5. Java基础-面向对象第三大特性之多态(polymorphism )

    Java基础-面向对象第三大特性之多态(polymorphism) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.多态概述 多态是继封装,继承之后,面向对象的第三大特性,多态的 ...

  6. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  7. 黑马程序员——OC语言 三大特性之多态

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三大特性之一的多态 (一)多态的基本概念 OC对象具有多态性体现在 Per ...

  8. java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  9. 理解 Java 的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

随机推荐

  1. JNDI 和JDBC的区别

    1.JNDI 和JDBC的区别和联系.两者都是API,是一个标准.并不是什么产品或方法.JDBC 全称:Java Database Connectivity 以一种统一的方式来对各种各样的数据库进行存 ...

  2. JS返回上一页

    <button  onclick="javascript:history.go(-1);">返回上一页</button> <button  oncli ...

  3. NYOJ题目611练练

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAssAAAJ1CAIAAACgqiqJAAAgAElEQVR4nO3du27jSp4HYL+Ecj2IYz

  4. 谈谈我的编程之路---WAMP(四)

    WAMP的一些配置与使用心得(windows)W-windows,说到windows,其实大家都最熟悉不过了,GUI(graphic user interface)图形界面就没有什么可说的了,基本会用 ...

  5. Python中如何读取xml的数据

    <?xml version="1.0" encoding="utf-8" ?> - <catalog> <maxid>4&l ...

  6. EditPlus

    # 批量更改文件编码 原文:EditPlus批量更改文件编码 # 标签位置设置到顶部 工具-参数设置-布局-文档选择器-位置

  7. traceroute

    把跳数设置为10次: ]# traceroute -m www.baidu.com traceroute to www.baidu.com ( hops max, byte packets 10.10 ...

  8. max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

    在/etc/syscurity/limits.conf 加入以下两行: elastic hard nofile 65536 elastic soft nofile  65536 #备注:elastic ...

  9. blender源代码编译

    blender源码路径(svn):https://svn.blender.org/svnroot/bf-blender/trunk/blender/ 依赖外部Lib(svn):https://svn. ...

  10. hdu 4049 2011北京赛区网络赛J 状压dp ***

    cl少用在for循环里 #include<cstdio> #include<iostream> #include<algorithm> #include<cs ...