类和对象
类和对象的基本概念
想必学过面向对象语言的,对类和对象都会有了解。
百度解释:
对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型,
其定义为:
class 类名{
}
它们的关系是,对象是类的实例,类是对象的模板。
通俗的说,引入类和对象,是为了能够使程序开发更加高效,使得代码分工,代码重用,代码维护更加高效。把具有相同属性和方法的一类实物抽象为类,再通过类的对象衍生出新的实例,这些在学习中会慢慢深入理解这些概念。
不了解的可以多去查看其他主流面向对象语言如C++,Java,C#中类和对象的概念。它们其实都具有三大特性(封装,继承,多态),只是在实现语法上有细微差别。
C++类和对象
Java中的类和对象
C#中 的类和对象
Objective-C跟C的区别与联系
Objective这个单词的中文解释就是对象,所以OC就是面向对象C的意思。
OC是一个面向对象的语言(封装、继承、多态) OC相当于C的一个超集 即OC允许使用任何C语言代码 但增加了许多C没有的特点 。
OC中的类与对象
OC中类由声明@interface
和实现 @implementation
两部分构成,interface
这个单词的中文解释是接口,但是专业的说,@interface
那一部分应该叫做类的声明。
我们来看类声明和实现的代码
类的声明和实现及对象方法
#import <Foundation/Foundation.h>
//声明
@interface Student : NSObject
{
//成员变量名
int _no;
Sex _sex;
}
- (void)setSex:(Sex)Sex;
@end
//实现
@implementation Student
- (void)setSex:(Sex)sex{
_sex=sex;
}
- (Sex)sex
{
return _sex;
}
@end
类与对象的一些细节注意
- 类的声明一定要在
@interface
和@end
之间,成员变量一定要在{}
之间 - 类的实现一定要在
@implementation
和@end
之间。 - 对象方法使用
- (void)
这里的void是类型,可以指定为int
,double
,NSString
等其他类型。 - 类方法使用
+ (void)
这里的void是类型,可以为其他类型。和对象方法一样,对象方法还可以称为实例方法。 - 如果你的类不继承任何类的话,至少要继承
NSObject
类,这是OC中的一个根类。不要忘记加入#import <Foundation/Foundation.h>
,这是引入OC框架类里的头文件 命名规则:成员变量最后以下划线
_
开头,set方法和get方法的命名规则最好set+方法名(首字母大写),get方法名就取变量名。OC中的对象创建
下面我们对上面的程序写一个主函数,
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *s =[Student new];
[s setSex:(Sexman)];
Sex se=[s sex];
NSLog(@"%d",se);
}
return 0;
}
注意OC和C++等不同的地方在于,它是用[]来新建一个对象空间的。
[ 类名 new]就是新建一个类对象,[对象名 对象方法 ]就是某对象执行一个对象方法。
类方法
声明
@interface Student : NSObject
+ (void)printHello;
@end
实现
@implementation Student
+ (void)printHello{
NSLog(@"我是类方法");
}
@end
调用
int main(int argc, const char * argv[]) {
[Student printHello];
return 0;
}
输出为我是类方法
类方法的语法就是+ (类型),调用的时候就是[类名 类方法]