OC中的面向对象语法4

一、 继承

1. 继承的基本用法

l 设计两个类Bird、Dog

// Bird的声明

@interface Bird : NSObject

{

@public

int weight;

}

- (void)eat;

@end

// Bird的定义

@implementation Bird

- (void)eat {

NSLog(@"吃吃吃-体重:%d", weight);

}

@end

// Dog的声明

@interface Dog : NSObject

{

@public

int weight;

}

- (void)eat;

@end

// Dog的定义

@implementation Dog

- (void)eat {

NSLog(@"吃吃吃-体重:%d", weight);

}

@end

l 有相同的属性和行为,抽出一个父类Animal(先抽取weight属性,再抽取eat方法)

// Animal的声明

@interface Animal : NSObject

{

@public

int weight;

}

- (void)eat;

@end

// Animal的定义

@implementation Animal

- (void)eat {

NSLog(@"吃吃吃-体重:%d", weight);

}

@end

l 子类在父类的基础上拓充属性和方法

// Bird的声明

@interface Bird : Animal

{

@public

int height;

}

- (void)fly;

@end

// Bird的定义

@implementation Bird

- (void)fly {

NSLog(@"飞飞飞-高度:%d", height);

}

@end

// Dog的声明

@interface Dog : Animal

{

@public

int speed;

}

- (void)run;

@end

// Dog的定义

@implementation Dog

- (void)run {

NSLog(@"跑跑跑-高度:%d", speed);

}

@end

l 子类方法和属性的访问过程:如果子类没有,就去访问父类的

l 父类被继承了还是能照常使用的

l 父类的静态方法

l 画继承结构图,从子类抽取到父类

l NSObject的引出:全部OC类的最终父类,包含了一些常用方法,比如+new

2. 继承的专业术语

l 父类\超类  superclass

l 子类  subclass\subclasses

3. 继承的细节

l 单继承

l 子类和父类不能有相同的成员变量

l 方法的重写

4. super关键字

l 分别调用父类的对象方法和类方法

5. 继承的好处

l 不改变原来模型的基础上,拓充方法

l 建立了类与类之间的联系

l 抽取了公共代码

l 坏处:耦合性强

6. 继承的使用场合

l 它的所有属性都是你想要的,一般就继承

l 它的部分属性是你想要的,可以抽取出另一个父类

二、 多态

1. 多态的基本概念

l 某一类事物的多种形态

l OC对象具有多态性

2. 多态的体现

Person *p = [Student new];

p->age = 100;

[p walk];

l 子类对象赋值给父类指针

l 父类指针访问对应的属性和方法

3. 多态的好处

l 用父类接收参数,节省代码

4. 多态的局限性

l 不能访问子类的属性(可以考虑强制转换)

5. 多态的细节

l 动态绑定:在运行时根据对象的类型确定动态调用的方法

三、 NSString的简单使用

1. 字符串的快速创建

NSStirng *str = @“Hello”;

2. 使用静态方法创建

3. 使用%@输出字符串

NSString *name = @”mj”;

NSLog(@“我的名字是%@”,  name);

时间: 2024-10-14 21:32:30

OC中的面向对象语法4的相关文章

OC中的面向对象语法

一. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 打开电脑 播放电脑中的歌曲 关闭电脑 b) 面向对象(不是相亲的“对象”) 电脑 ² 开机 ² 播放歌曲 ² 关机 2) 区别分析 面向过程关注的是解决问题需要哪些步骤:面向对象关注的是解决问题需要哪些对象 没有开发经验很难感受到它们的区别,两种思想都能达到解决问题的目的,但是解决思路不一样 想打电话\发短信 à 

OC中的面向对象语法3

一. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 2. set方法 1) 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 2) 命名规范: 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写 形参名称不要跟成员变量同名 3. get方法 1) 作用:返回对象内部的成员变量 2) 命名

黑马程序员-OC中的点语法,成员变量的作用域

点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法: [p.age]; // 这样不赋值相当于调用了getter: 注意点: 尽量不要在setter或getter中调用点语法,容易引发死循环:死循环是由于递归调用引发的: // 在setter调用点语法 - (void)setAge:(in

oc中的点语法讲解

1.类的属性都有对应的getter和setter方法, 我们可以通过 [对象 setXxx:22]/[对象 xxx]方式调用setter方法和getter方法 但是也可以用  对象.Xxx=22 /int a=对象.xxx 这种方式编译器会自动帮我们判断是要get还是set, 当用这个点语法的时候,对象访问的并不是属性,而是去调用了get或set方法

OC中的特有语法

一. 分类-Category 1. 基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 l 继承 l 分类(Category) 2. 格式 分类的声明 @interface 类名 (分类名称) // 方法声明 @end 分类的实现 @implementation 类名 (分类名称) // 方法实现 @end 3. 好处 一个庞大的类可以分模块开发 一个庞大的类可以由多个人来编写,更有利于团队合作 给NSString增加一个类方法:计算某个字符串中阿拉伯数字的个数 给NSStr

接上次OC中特有的语法

注:(由于身边没有苹果设配 就先总结下,相关代码后补) 三.description方法 1. -descriotion 方法 使用NSLog和%@输出某个对象时候,会调用对象的-description方法,并拿到返回值进行输出 2.+description 方法 使用NSLog和%@输出某个类对象时,会调用类对象+description方法,并拿到返回值进行输出 3.修改NSLog的默认输出 重写-description或者+description方法即可. 4.死循环陷阱 如果在-descri

OC基础(一)面向对象

一.OC概述 1.简介 OC是基于C,所以在代码上是完全兼容C的.在OC中,你可以使用C的语法,甚至C++的语法. C是面向过程的语言,而OC是面向对象的语言. 2.关键字 OC中的关键字都以"@"开头. 如:@public.@string 二.面向对象 1.面向对象和面向过程 是考虑事情的2种不同思想.面向过程,考虑的是做事情需要哪些步骤,面向对象考虑的则是谁能做这些事. 就比如:我想打电话 面向过程:开机->找到通讯录->拨打号码 面向对象:找手机 2.OC中的面向对象

浅析ios开发中Block块语法的妙用

事实上,任何一个应用的开发都离开多线程.而"块"block与GCD就是苹果OC语言中多线程的核心. 一.块的内部结构 在oc中,块语法以闭包的形式存在,每一个Objective-C对象都占据着某个内存区域.块本身也是一个对象,在存放块的对象内存区域中,首个变量是指向Class的指针,该指针叫做isa.其余内存里含有块对象正常运转所需的各种信息. 以下是块语法的内部结构变量. 1.void*                                   isa(指向class的对象

OC中面向对象2

一. 定义OC的类和创建OC的对象 接下来就在OC中模拟现实生活中的情况,创建一辆车出来.首先要有一个车子类,然后再利用车子类创建车子对象 要描述OC中的类稍微麻烦一点,分2大步骤:类的声明.类的实现(定义).跟函数类似,函数有分声明和定义 1. 类的声明 1) 代码编写 定义一个Car类,拥有2个属性:轮子数.时速,1个行为:跑 类名\属性的命名规则:标示符的规则 类名的命名规范:有意义.驼峰标识.首字母大写 #import <Foundation/Foundation.h> // 类的声明