-
OC学习目录:
-
类,对象
-
继承,多态,方法
-
NSString,NSValue,NSNumber
-
属性
-
集合
-
内存管理
-
设计模式,引用传值
-
类目,延展,协议
-
综合应用
-
API, Cocoa & Cocoa Touch
-
NSString, Collection
-
类与对象,实例变量
-
面向过程 VS 面向对象
-
@ 的作用
int main(int argc, const char * argv[]) {
@autoreleasepool //区分关键字
{
@"abc" //格式化字符串,转变为字符串对象
@[@"1"] //格式化便利构造对象
@0 //格式化便利构造对象
NSLog(@"Hello, World!");
}
return 0;
}
-
NSLog 函数
NSLog(@"Hello, World!"); //NSLog 可以加时间戳,可以自动换行,但是NSLog执行效率不高
//如何输出对象
NSString *string = @"abc";
NSArray *array = @[@"a",@"b"];
NSNumber *number = @10; //不能直接写10这个数, 数不是对象
NSLog(@"string = %@", string);
NSLog(@"array = %@", array);
NSLog(@"number = %@", number);
-
头文件
使用< >和 " "的区别
< > 表示要导入一个库
" " 表示要导入自定义文件
-
初始化方法
//对象的初始化(复写了系统的init方法,如果一个类本身有init方法,那么优先调用这个类的init方法,而不是去调用其父类的init方法)
- (instancetype)init
{
//让父类初始化一个实例对象
self = [super init];
//如果创建成功
if (self) {
//完成所有初始值
age = 10;
name = @"Input name";
computer = [[Computer alloc] init];
}
return self;
}
-
创建对象
//创建一个对象
Person *person = [[Person alloc] init];
//id表示泛型(少用)
id person1 = [[Person alloc] init];
NSObject *person2 = [[Person alloc] init]; //NSObject *可以写成id
//输出对象
NSLog(@"%@", person);
-
成员变量
成员变量必须包含在大括号中
注意成员变量不声明任何关键字的话是默认可访问性@Protected
注意在ObjC中不管是自定义的类还是系统类对象都必须是一个指针,例如下面的name
{
@private
NSString *name;
int age;
@protected
NSString *nation;
@public
float height;
}
@private 私有成员,只有当前类可以访问
@protected 受保护成员,只有当前类或子类可以访问(如果没有添加任何修饰则默认为
@protected)
@public 公共成员,所有类均可访问
新创建一个工程:
1、新创建一个Student类,该类中包含几个成员变量(姓名name,性别gender,年龄age,身份证号code,电话号phoneNumber)
2、使用init方法给每个成员变量赋值
3、自定义一个方法,打印输出该学生的爱好;
在同一个工程中实现:
1、新创建一个Teacher类,该类中包含几个成员变量(姓名name,授课课程teach,)
2、给Teacher类增加一个Student类的成员变量
3、完成所有成员变量的赋值
研究性知识点:
1、交叉引用
2、了解成员变量放在.m文件时的作用和它更加深入的意义用法
<main.c>
#import <Foundation/Foundation.h>
#import "Student.h"
#import "Teacher.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建一个Student类的对象
Student *newStudent = [[Student alloc] init];
//打印输出学生兴趣
[newStudent printHobby];
//创建一个Teacher类的对象
Teacher *newTeacher = [[Teacher alloc] init];
//设置newTeacher的姓名,课程
[newTeacher setTeacherName:@"Mr.Wang"];
[newTeacher setCourse: @"Objective-C"];
//打印老师信息
[newTeacher printTeacher];
}
return 0;
}
<Student.h>
#import <Foundation/Foundation.h>
@interface Student : NSObject
/**
* 1、 新创建一个Student类,该类中包含几个成员变量
* (姓名name,性别gender,年龄age,身份证号code,电话号phoneNumber)
*/
{
NSString *name;
NSString *gender;
NSInteger age;
NSInteger codeID;
NSInteger phoneNumber;
}
- (instancetype)init;
- (void)printHobby;
- (void)printStudent;
@end
<Student.m>
#import "Student.h"
@implementation Student
/**
* 2、 使用init方法给每个成员变量赋值
*/
- (instancetype)init
{
self = [super init];
if (self) {
name = @"Dong Tao";
gender = @"Male";
age = 20;
codeID = 510726198810030016;
phoneNumber = 13778204000;
}
return self;
}
/**
* 自定义一个方法,打印输出该学生的爱好;
*/
- (void)printHobby {
NSLog(@"I love swimming.");
}
/**
* 打印学生信息
*/
- (void)printStudent {
NSLog(@"name = %@", name);
NSLog(@"Gender = %@", gender);
NSLog(@"Age = %ld", (long)age);
NSLog(@"ID = %ld", (long)codeID);
NSLog(@"Phone Number = %ld", (long)phoneNumber);
}
@end
<Teacher.h>
#import <Foundation/Foundation.h>
#import "Student.h"
@interface Teacher : NSObject
/*
* 1、新创建一个Teacher类,该类中包含几个成员变量(姓名name,授课课程teach,)
* 2、给Teacher类增加一个Student类的成员变量
*/
{
NSString *teacherName;
NSString *teacherCourse;
Student *myStudent;
}
-(void)setTeacherName: (NSString *) name;
-(void)setCourse: (NSString *) course;
-(NSString *)teacherName;
-(NSString *)Course;
-(void)printTeacher;
@end
<Teacher.m>
#import "Teacher.h"
#import "Student.h"
@implementation Teacher
-(void)setTeacherName: (NSString *) name {
teacherName = name;
}
-(void)setCourse: (NSString *) course {
teacherCourse = course;
}
-(NSString *)teacherName {
return teacherName;
}
-(NSString *)Course {
return teacherCourse;
}
-(void)printTeacher {
NSLog(@"%@ teaches %@", teacherName, teacherCourse);
myStudent = [[Student alloc] init];
[myStudent printStudent];
}
@end
-
5. 14 Objective-C 类与对象,成员变量
最新推荐文章于 2021-02-26 23:06:00 发布