黑马程序员—Objective-C基础_封装、继承、多态
2014-03-27 00:08
651 查看
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------------
封装
将成员变量的访问和修改限制在对象内部进行操作,保证数据的安全性。
@interface Person : NSObject
{
NSString *_name;
}
- (void)setName:name;
- (NSString *)name;
- (void)run;
@end
@implementation Person
- (void)setName:name
{
_name = name;
}
- (NSString *)name
{
return _name;
}
- (void) run
{
NSLog(@"跑一圈");
}
@end
成员变量:以_开头,用于区分set方法参数名称、get方法名称,以及局部变量名称。
NSString *_name;
ste方法:使用set方法对成员变量进行赋值,可以在方法内对参数进行过滤,保证数据的合理性
- (void)setName:(NSString
*)name;
命名规范:
1> 方法名必须以set开头,后跟成员变量名称,名称首字母大写。
2> 没有返回值,接收一个参数,类型与成员变量类型一致
3> 形参与成员变量名不一样
get方法:返回对象内部的成员变量
- (NSString *)name;
命名规范:
1> 有返回值,类型与成员变量类型一样
2> 方法名称和成员变量名称一样
3> 不需要接收参数
继承
当两个类拥有相同的成员变量和方法时,可以把相同的内容抽取到一个父类之中。或者当A类所拥有的成员变量和方法和B类中的部分成员变量和方法形同时,可以让B类继承A类。如下:
@interface Student : Person
- (void)eat;
@end
@implementation Student
- (void)eat
{
NSLog(@"%@吃了一顿",self->_name);
}
- (void)run // 重写父类run方法
{
[self eat]; // 调用当前对象eat方法
[super run]; // 调用父类run方法
}
@end
这里Student类继承自Person类,Student类包含了Person类中所有的成员变量和方法。
继承的好处
1> 抽取重复代码
2> 建立类与类之间的关系
3> 子类拥有父类所有成员变量和方法,所有类的根类都是NSObjcet 。
self和super
self用途:代表调用它的当前对象或者类。
在对象方法内可以使用(self->成员变量名)来访问当前对象内部的成员变量。
使用[self 方法名]可以调用其他对象方法或者类方法。
super用途:直接调用父类中的某个方法。当子类重写父类的方法,需要保留父类方法的实现时,可以使用super。
super用在对象方法内,调用父类的对象方法;在类方法内,调用父类的类方法。
多态
多态是建立在继承的基础之上的,没有继承就没有多态。如下:
int main()
{
// 定义一个指向Person的指针指向Student对象
Person *p = [Student new];
[p setName:@"jack"]; // 使用set方法设置对象名字
NSLog(@"%@",[p name]); // 使用get方法或取对象名字
[p run];// 调用run方法,此方法父类和子类都有,并且在子类内部重写
// [p eat]; // 此方法为子类特有方法,无法直接调用
Student *p1 = (Student *)p; // 将Person类型转换为Student类型
[p1 eat];
[p1 run]; // 调用子类对象方法
return 0;
}
多态体现在父类类型的指针可以指向子类对象。但是父类类型的变量不能直接调用子类特有的方法,必须强制转换为子类类型变量后,才能直接调用。
当函数或者方法参数内使用的是父类类型,可以传入父类或者子类对象。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------------
详细请查看:http://edu.csdn.net
----------------------
封装
将成员变量的访问和修改限制在对象内部进行操作,保证数据的安全性。
@interface Person : NSObject
{
NSString *_name;
}
- (void)setName:name;
- (NSString *)name;
- (void)run;
@end
@implementation Person
- (void)setName:name
{
_name = name;
}
- (NSString *)name
{
return _name;
}
- (void) run
{
NSLog(@"跑一圈");
}
@end
成员变量:以_开头,用于区分set方法参数名称、get方法名称,以及局部变量名称。
NSString *_name;
ste方法:使用set方法对成员变量进行赋值,可以在方法内对参数进行过滤,保证数据的合理性
- (void)setName:(NSString
*)name;
命名规范:
1> 方法名必须以set开头,后跟成员变量名称,名称首字母大写。
2> 没有返回值,接收一个参数,类型与成员变量类型一致
3> 形参与成员变量名不一样
get方法:返回对象内部的成员变量
- (NSString *)name;
命名规范:
1> 有返回值,类型与成员变量类型一样
2> 方法名称和成员变量名称一样
3> 不需要接收参数
继承
当两个类拥有相同的成员变量和方法时,可以把相同的内容抽取到一个父类之中。或者当A类所拥有的成员变量和方法和B类中的部分成员变量和方法形同时,可以让B类继承A类。如下:
@interface Student : Person
- (void)eat;
@end
@implementation Student
- (void)eat
{
NSLog(@"%@吃了一顿",self->_name);
}
- (void)run // 重写父类run方法
{
[self eat]; // 调用当前对象eat方法
[super run]; // 调用父类run方法
}
@end
这里Student类继承自Person类,Student类包含了Person类中所有的成员变量和方法。
继承的好处
1> 抽取重复代码
2> 建立类与类之间的关系
3> 子类拥有父类所有成员变量和方法,所有类的根类都是NSObjcet 。
self和super
self用途:代表调用它的当前对象或者类。
在对象方法内可以使用(self->成员变量名)来访问当前对象内部的成员变量。
使用[self 方法名]可以调用其他对象方法或者类方法。
super用途:直接调用父类中的某个方法。当子类重写父类的方法,需要保留父类方法的实现时,可以使用super。
super用在对象方法内,调用父类的对象方法;在类方法内,调用父类的类方法。
多态
多态是建立在继承的基础之上的,没有继承就没有多态。如下:
int main()
{
// 定义一个指向Person的指针指向Student对象
Person *p = [Student new];
[p setName:@"jack"]; // 使用set方法设置对象名字
NSLog(@"%@",[p name]); // 使用get方法或取对象名字
[p run];// 调用run方法,此方法父类和子类都有,并且在子类内部重写
// [p eat]; // 此方法为子类特有方法,无法直接调用
Student *p1 = (Student *)p; // 将Person类型转换为Student类型
[p1 eat];
[p1 run]; // 调用子类对象方法
return 0;
}
多态体现在父类类型的指针可以指向子类对象。但是父类类型的变量不能直接调用子类特有的方法,必须强制转换为子类类型变量后,才能直接调用。
当函数或者方法参数内使用的是父类类型,可以传入父类或者子类对象。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
----------------------
详细请查看:http://edu.csdn.net
相关文章推荐
- 黑马程序员_java基础-封装继承多态
- 黑马程序员_学习日记35_529基础加强(封装、继承、多态)
- 黑马程序员---java基础之面向对象(一)三大特征(封装,继承,多态)
- 黑马程序员----Java基础之面向对象(封装 继承 多态)
- 黑马程序员----Java基础之面向对象(封装 继承 多态)(二)
- 黑马程序员Objective-C笔记:封装,继承,多态
- 黑马程序员——Objective--C笔记之封装 继承 多态
- 黑马程序员---OC基础---封装、继承、多态、@property、id类型、实例变量修饰符
- 黑马程序员——Objective-C的封装、继承与多态
- 黑马程序员-----------Objective-c基础-----------继承和多态
- 黑马程序员——Java基础---面向对象(封装、继承、多态)
- 黑马程序员—IOS基础之OC—类的三大特性封装、继承、多态
- 黑马程序员——Objective-C——封装、继承、多态
- 黑马程序员 JAVA基础<二> 面向对象之封装 继承 多态
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 黑马程序员——OC基础02—封装、继承、多态
- 【黑马程序员】iOS学习之路——Objective-C之封装、继承和多态
- 黑马程序员 JAVA基础学习日记五——封装 继承 多态
- 黑马程序员——Objective-C语言知识整理——封装、继承与多态
- 黑马程序员——OC基础学习(四)---封装,继承和多态的学习知识总结