5.0OC基础语法-继承、多态

继承
继承的基本用法
设计两个类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

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

// Animal的声明
@interface Animal : NSObject
{
    @public
        int weight;
}
- (void)eat;
@end
// Animal的定义
@implementation Animal
- (void)eat {
    NSLog(@"吃吃吃-体重:%d", weight);
}
@end

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

// 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

子类方法和属性的访问过程:如果子类没有,就去访问父类的
父类被继承了还是能照常使用的
父类的静态方法
画继承结构图,从子类抽取到父类
NSObject的引出:全部OC类的最终父类,包含了一些常用方法,比如+new

继承的专业术语
父类\超类  superclass
子类  subclass\subclasses

继承的细节
单继承
子类和父类不能有相同的成员变量
方法的重写

super关键字
分别调用父类的对象方法和类方法

继承的好处
不改变原来模型的基础上,拓充方法
建立了类与类之间的联系
抽取了公共代码
坏处:耦合性强

继承的使用场合
它的所有属性都是你想要的,一般就继承
它的部分属性是你想要的,可以抽取出另一个父类

多态
多态的基本概念
某一类事物的多种形态
OC对象具有多态性

多态的体现
Person *p = [Student new];
p->age = 100;
[p walk];
子类对象赋值给父类指针
父类指针访问对应的属性和方法

多态的好处
用父类接收参数,节省代码

多态的局限性
不能访问子类的属性(可以考虑强制转换)

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

NSString的简单使用
字符串的快速创建
NSStirng *str = @“Hello”;
使用静态方法创建
使用%@输出字符串
NSString *name = @”mj”;
NSLog(@“我的名字是%@”,  name);

时间: 2024-10-06 05:54:10

5.0OC基础语法-继承、多态的相关文章

9.0OC基础语法-协议的简单使用

简单使用基本用途可以用来声明一大堆方法(不能声明成员变量)只要某个类遵守了这个协议,就相当于拥有这个协议中的所有方法声明只要父类遵守了某个协议,就相当于子类也遵守了 格式协议的编写@protocol 协议名称// 方法声明列表@end某个类遵守协议@interface 类名 : 父类 <协议名称>@end 关键字协议中有2个关键字可以控制方法是否要实现(默认是@required),在大多数情况下,用途在于程序员之间的交流@required:这个方法必须要实现(若不实现,编译器会发出警告)@op

8.0OC基础语法-内存管理

什么是内存管理移动设备的内存极其有限,每个app所能占用的内存是有限制的当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收一些不需要使用的对象.变量等管理范围:任何继承了NSObject的对象,对其他基本数据类型(int.char.float.double.struct.enum等)无效 对象的基本结构每个OC对象都有自己的引用计数器,是一个整数,表示“对象被引用的次数”,即有多少人正在使用这个OC对象每个OC对象内部专门有4个字节的存储空间来存储引用

11.0OC基础语法-ARC的简单认识

基本简介ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集器.因此 ARC 和手动内存管理性能是一样的,有时还能更加快速,因为编译器还可以执行某些优化 基本原理规则ARC 的规则非常简单:只要还有一个强指针变量指向对象,对象就会保持在内存中 强指针和弱指针默

java基础之【继承---&gt;多态】内存图

执行流程 1:Animal a = new Cat(); 1.1:在栈中创建区域,类型为Animal,变量名:a; 1.2:在堆中new Cat();占用一块区域.地址值:[0x3a4] 1.3:spuer()实例化父类Animal. 1.3.1:new Animal();占用一块区域,地址值:0x3ab; 1.3.2:引用着在方法区中初始化[Animal中的所有方法,该引用为:[0x754]]. 1.3.3:将Animal()引用赋给spuer();spuer引用着Animal(); 1.4:

JAVA基础笔记(很实用)继承-多态-抽象类-接口-异常-集合-IO-线程-Socket

第七章:Java继承 一.继承的概念 1.一个父类派生出一个子类的机制称为继承. 2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类. 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可. 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法. 5.两个或多个类的成员中存在一部分相同的情况,通过继承机制,可以利用现有的类来创建新的类. 6.子类不但拥有父类的成员,还可以定义新的成员. 7.可以提高软件的可重用

es6 class的基础语法,es6 class继承/ es5 call继承描述/使用apply比较完美继承Array的方法 sort倒序排序console.table()表格生成

//基础语法function People(name,email){ name, email } class User{ constructor(name,email){ this.name = name; this.email = email; } getinfo(){ console.log(this.name); } static description(){ console.log('I am description --static'); } set urls(values){ con

Python学习的个人笔记(基础语法)

Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅,一开始保存在word上,代码不是很好看,于是决定复制到博客里面,可能有复制过程中出错的,或者我本身在理解方面有出错的地方,希望能得到指正,谢谢  后续的内容我会继续学习…… python下载地址  www.python.org Python 分为2.7和3.3两个版本,3.3有些库不兼容,因此用2.

Java基础十二--多态是成员的特点

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉

javascript基础语法——词法结构

× 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫:而说它复杂,是因为要真正掌握它则需要数年时间.实际上,前端工程师很大程度上就是指javascript工程师.前端入门容易精通难,说的是前端,更指的是javascript.本文是javascript基础语法的第一篇——词法结构 与java关系 关于javascript有这样一个说法,java和jav