多态

 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. NYOJ之括号配对问题

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述     现在,有一行括号序列,请你检查这行括号是否配对. 输入     第一行输入一个数N(0<N&l ...

  2. postgresql集群方案参考答案

    PostgreSQL配置Streaming Replication集群 http://www.cnblogs.com/marsprj/archive/2013/03/04/2943373.html p ...

  3. 用spring+hibernate+struts 项目记录以及常用的用法进等

    一.hibernate1. -----BaseDao------ // 容器注入 private SessionFactory sessionFactory; public void setSessi ...

  4. <转>JDBC获取DB元数据

    原文链接:http://jiauwu.iteye.com/blog/1307617 package com.util.jdbc; import java.sql.Connection; import ...

  5. 数据结构之图 Part3 – 2 遍历

    BFS using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  6. [J2EE] 在Web如何取得相关路径

    来自网络,自己整整一下: request.getRealPath("url"); // 虚拟目录映射为实际目录,不建议使用,使用ServletContext.getRealPath ...

  7. Linux命令之ar - 创建静态库.a文件和动态库.so

    转自:http://blog.csdn.net/eastonwoo/article/details/8241693 用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令行中 ...

  8. WIN7系统下U盘安装Ubuntu双系统

    1. 准备工作 1. 官网下载Ubantu镜像,我下载的是Ubantu14.04.3 LTS版本: 2. 下载 Universal USB Installer (UUI)用于制作U盘启动盘: 3. 下 ...

  9. Socket 通讯

    #import "ViewController.h" #import <sys/socket.h> #import <netinet/in.h> #impo ...

  10. 已解决:Strict Standards: Non-static method cls_image::gd_version() should not be called statically in...

    在安装Ecshop的时候,遇到两个⚠️问题: Strict Standards: Non-static method cls_image::gd_version() should not be cal ...