main函数
//
// main.m
// 2-2 LessonClassAndObject
//
// Created by lanouhn on 15/2/2.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
//import引用系统的头文件用 <>, 引用自定义类的头文件用 ""
#import <Foundation/Foundation.h>
#import "Car.h"
#import "Iphone.h"
#import "person.h"
#import "BuyShoe.h"
#import "Shoes.h"
int main(int argc, const char * argv[]) {
//OC: Objective - C, 面向对象的C语言
//1. C的超集
//2. 扩展了的面向对象的编程思想
//3. 是一门运行时语言, 比如数据类型等一些特性, 在运行时才能够决定, 编译的时候只能够判断程序格式上是否正确
//4. 类库丰富
//面向对象: OOP
//创建一个对象
Car *myCar =[[Car alloc] init];
//为对象的实例变量赋值
myCar ->color = @"红色";
myCar ->type = @"BWM";
myCar ->price = 400000;
myCar ->speed = 300;
myCar ->numberOfWheel = 5;
//执行方法, 用的是消息机制调用方法, 需要加[]
[myCar run];
[myCar stop];
//%@:用于打印对象
//NSLog(@"%@的%@, 有%d个轮子, 竟然能跑! ", myCar ->color, myCar -> type, myCar ->numberOfWheel);
Car *bCar = [[Car alloc] init];
bCar ->color = @"白色";
bCar ->type = @"Lamando";
bCar ->price = 500000;
bCar ->speed = 248;
bCar ->numberOfWheel = 4;
[bCar run];
Iphone *phone1 = [[Iphone alloc] init];
// //1.内存分配
// Iphone *phone1 = [Iphone alloc];
// //2.对象初始化
// [phone1 init];
//+方法用类调用
//-方法用对象调用
phone1 ->color = @"土豪金";
phone1 ->type = @"Iphone";
phone1 ->price = 5198;
phone1 ->version = @"6Plus";
[phone1 call];
[phone1 playGame];
[phone1 surfing];
[phone1 callTosomeone:@"葫芦娃"];
// 去逛夜市,我:这个怎么卖。摊主:380这个是真金的。我:10块。摊主:看清楚啊这个是真金。我:10块。摊主:好吧!看你那么执着卖你吧。我:我不买,就练练砍价。摊主:你别跑,你别跑,劳资砍死你!
Person *me = [[Person alloc] init];
me ->name = @"我";
Person *boss = [[Person alloc] init];
boss ->name = @"摊主";
[me say:@"这个怎么卖?"];
[boss say:@"380这个是真金的!"];
[me say:@"10块"];
[boss say:@"看清楚啊这个是真金的!"];
[me say:@"10块"];
[boss say:@"好吧! 看你那么执着卖你吧."];
[me say:@"我不买, 就练练砍价."];
[boss say:@"你别跑, 你别跑, 劳资砍死你!!!"];
//“老公,我喜欢这双鞋。”老公看了看8888元,说道:“钱可能不够,就带了一半。” “那就买4000的那双吧。” “不告诉你了吗?只带了88。
BuyShoe *buy1 = [[BuyShoe alloc] init];
buy1 ->name = @"老公";
BuyShoe *buy2 = [[BuyShoe alloc] init];
buy2 ->name = @"老婆";
Shoes *shoes = [[Shoes alloc] init];
shoes ->price = 8888;
shoes ->color = @"白";
// [buy2 talk:@"老公, 我喜欢这双鞋子"];
// [buy1 look:@"8888元"];
// [buy1 talk:@"钱可能不够,就带了一半."];
// [buy2 talk:@"那就买%f的那双把."];
// [buy1 talk:@"不告诉你了吗? 只带了88."];
[buy2 talk:@"老公, 我喜欢这双鞋子"];
[buy1 seeThePriceOfShoes: shoes];
[buy1 talk:@"钱可能不够,就带了一半."];
[buy2 talk:@"那就买4000的那吧."];
[buy1 talk:@"不告诉你了吗? 只带了88."];
/*
作业1
定义10个类:
1、声明:实例变量、方法。实现:初始化方法、自定义方法、自我
介绍方法。(方法实现时,以NSLog输出即可)
2、在main.m中分别创建10个类的对象。
3、给对象的实例变量进行赋值、取值操作,执行方法。
作业2
1、早9:30开班仪式开始。(NSLog(@“开班仪式正式开始”))
2、刘辉老师做自我介绍。
3、三名学生做自我介绍。
需求: (1)定义一个班级类(Class)。
实例变量:所属培训机构名称,班级名,班级人数、授课老师名字、开班日期。 方法:初始化(设置学校名字:蓝鸥)、集体活动、开班仪式。
(2)定义一个老师类。 实例变量:名字、性别、年龄、正在教的课程。 方法:初始化、讲课、布置作业、验收作业、解决问题、自我介绍。
(3)定义一个学生类。
实例变量:名字、性别、年龄、学号。 方法:初始化、学习、做作业、提出问题、回答问题、自我介绍。
注:方法以NSLog输出为主
*/
return 0;
}
//重写父类的初始化方法, 来给实例变量赋初值
//由于父类已经声明了init方法, 重写父类的init方法不需要写方法声明, 只需要写实现部分
Car类的声明
//
// Car.h
// 2-2 LessonClassAndObject
//
// Created by lanouhn on 15/2/2.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
//类
//1. 特征
//2. 行为
//汽车类
//1. 特征: 颜色, 型号, 品牌, 价格, 最高速度
//2. 行为: 跑, 停, 加速, 减速
//include 和import
//共同点
//1. 编译指令
//2. 都是引入头文件, 引入的过程都是一个复制粘贴的过程, 做的单纯的拷贝
//不同点
//import能够保证头问价只被引用一次
/*
引用三次
#include"aa.h"
#include"aa.h"
#include"aa.h"
引用一次
#import"aa.h"
#import"aa.h"
#import"aa.h"
*/
//类的定义
//1. 接口部分
//2. 实现部分
#import <Foundation/Foundation.h>
//接口部分以@interface开头,以@end结尾, 整个接口部分要写在@interface - @end之间
/*
@interface 类名 : 父类名
*/
@interface Car : NSObject
{
//类的特征写在这里
//实例变量
@public
//只要是继承于NSObject的类, 在意这个类创建对象的时候, 一定要加*
//NSString是OC中的字符串类
NSString *color;
//基本的数据类型(int, short, long, float, double, char), 不用加*
CGFloat price;
CGFloat speed;
NSString *type;
NSInteger numberOfWheel;
}
//类的行为
//方法
//方法声明写在 .h 中,大括号后面, @end之前
//OC中的方法
- (void)run;
- (void)stop;
@end
Car类的实现
//
// Car.m
// 2-2 LessonClassAndObject
//
// Created by lanouhn on 15/2/2.
// Copyright (c) 2015年 lanouhn. All rights reserved.
//
// .h header, 头文件
// .m implementation, 实现文件
#import "Car.h"
//方法的实现写在@implementation - @end之间
@implementation Car
- (void)run {
//c语言中的字符串"跑"
//OC中的字符串需要加@"跑"
//NSLog比起printf, 会自动加换行, 运行时间等
//printf("跑\n"); //c语言
// NSLog(@"跑");
NSLog(@"%@的%@, 有%ld个轮子, 竟然能跑! ", color, type, numberOfWheel);
}
- (void)stop {
NSLog(@"停");
}
@end