#import <Foundation/Foundation.h>
// .h文件称为接口文件
// 类名和文件名可以不一样,但是为了方便管理,让类名和文件名相同
// Student是当前类的类名
// 一个文件里面只有一个类
// 冒号后面的NSObject是当前类的父类,继承于NSObject
@interface Student :NSObject
// 特征
{
@public
// 成员变量
// 基本数据类型, 比如NSInteger, CGFloat修饰的成员变量不加*
NSString *_stuName; // 学生姓名
NSInteger _stuAge; // 学生年龄
CGFloat _stuScore; // 学生成绩
NSString *_stuHobby;// 学生爱好
NSString *_stuSex; // 学社性别
}
// 行为
// 打招呼
- (void)sayHi;
// 玩
- (void)play;
// 吃饭
- (void)eat;
@end
//*******************************************************//
#import <Foundation/Foundation.h>
@interface Person :NSObject
{
// @public 公开的, 被public修饰的成员变量谁都可以进行使用
// @protected是被保护的,如果没有指定可见度,默认是被保护的
//它的使用范围被限制在本类和它的子类可以只用
// @private 私有的, 只有本类可以使用
// @package是系统内部使用的成员变量,我们在外部不能使用,所以以后看见系统的头文件的时候,如果见了@package,直接无视
// @public
NSString *_name;
NSInteger _age;
NSString *_sex;
NSString *_hobby;
NSString *_id;
}
-(void)sayHi;
@end
//***********************************************//
#import "Person.h"
@implementation Person
-(void)sayHi {
NSLog(@"%@",_name);
}
@end
//*******************************************************
#import "Student.h"
// .m是实现文件,用来实现方法的
@implementation Student
// 打招呼
- (void)sayHi {
// 方法(行为)的实现
//NSLog(@"大家好");
//打印对象的所有的成员变量
NSLog(@"%@",_stuName);
}
// 玩
- (void)play {
NSLog(@"喜欢玩");
}
// 吃饭
- (void)eat {
NSLog(@"喜欢吃");
}
// 有一个 typedef void* id;
// 重写初始化方法
- (id)init {
_stuName =@"小田田";
_stuHobby = @"女";
_stuAge =90;
_stuScore = 0;
_stuSex =@"待定";
return self;
}
@end
//**************************************************
#import <Foundation/Foundation.h>
@interface AudiCar :NSObject
// 特征
{
@public
NSString *_color;
NSString *_model;
NSInteger _price;
NSString *_seat;
NSString *_owner;
}
// 行为
- (void)run;
- (void)turn;
- (void)backward;
- (void)siren;
@end
//*******************************************
#import <Foundation/Foundation.h>
@interface Phone : NSObject
// 特征
{
@public
NSString *_brand;
NSString *_model;
NSInteger _price;
NSString *_color;
NSString *_measurement;
}
// 行为
- (void)call;
- (void)message;
- (void)go_online;
@end
//*************************************************
#import "Phone.h"
@implementation Phone
- (void)call {
NSLog(@"call");
}
- (void)message {
NSLog(@"message");
}
- (void)go_online {
NSLog(@"Internet");
}
// 重写初始化函数init
- (id)init {
_brand =@"apple";
_model =@"6plus";
_price =5699;
_color =@"white";
_measurement =@"5英寸";
return self;
}
@end
//***********************************************
#import "AudiCar.h"
@implementation AudiCar
- (void)run {
NSLog(@"run");
}
- (void)turn {
NSLog(@"turn");
}
- (void)backward {
NSLog(@"backward");
}
- (void)siren {
NSLog(@"siren");
}
// 重写初始化方法init
- (id)init {
_color =@"block";
_owner =@"常老大";
_model =@"A6";
_price =90000;
_seat =@"四个";
return self;
}
@end
//*************************************************
#import <Foundation/Foundation.h>
#import "Student.h"
#import "AudiCar.h"
#import "Phone.h"
#import "Person.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
// insert code here...
// NSLog(@"Hello, World!");
//
// NSInteger a = 10;
// NSLog(@"%ld", a);
//
// CGFloat f = 3.14;
// NSLog(@"%g", f);
// oc里的字符串
// NSString *str = @"你好";
// NSLog(@"%@", str);
//创建对象
//第一步操作:开辟堆区的内存空间
// Student *stu = [Student alloc];
// NSLog(@"%p", stu);
// // 第二步: 进行初始化设置
// stu = [stu init];
//通常把创建对象的两步和在一起写
// Student *stu = [[Student alloc] init];
// 函数被类调用要用+, 被对象调用要用-
// Student 继承与NSObject, 所以Student可以使用NSObject里所有的行为,所以可以直接使用alloc和init这两个方法
// NSLog(@"%@", stu->_stuName);
// stu->_stuName = @"小田田";
// NSLog(@"%@", stu->_stuName);
// stu->_stuAge = 24;
// NSLog(@"%ld", stu->_stuAge);
// 调用行为(方法)
// [stu sayHi];
// [stu play];
// 创建一个AudiCar类
// AudiCar *audi = [[AudiCar alloc] init];
// // 调用该对象audi中的成员
// audi->_color = @"red";
// NSLog(@"%@", audi->_color);
// audi->_model = @"A4";
// NSLog(@"%@", audi->_model);
// audi->_owner = @"常老大";
// NSLog(@"%@", audi->_owner);
// // 调用该对象audi中的行为
// [audi run];
// [audi turn];
// [audi backward];
// [audi siren];
// 创建并初始化一个Student对象
// Student *stu = [[Student alloc] init];
// NSLog(@"%@", stu->_stuName);
// NSLog(@"%@", stu->_stuSex);
// [stu sayHi];
//谁来调用sayHi方法,就会打印那个对象的成员变量内容
// stu->_stuName = @"孙悟空";
// [stu sayHi];
// 创建并初始化一个AudiCar对象
// AudiCar *audi = [[AudiCar alloc] init];
// NSLog(@"%@", audi->_color);
// NSLog(@"%@", audi->_model);
// NSLog(@"%@", audi->_owner);
// NSLog(@"%ld", audi->_price);
// NSLog(@"%@", audi->_seat);
//创建并初始化一个Phone对象,并调用其实例变量和成员函数
Person *per = [[Personalloc]init];
// per->_age = 10; // 受保护的成员变量不能在其它函数调用
}
return0;
}