第一部分 1.12 OC基础语法-类的声明和实现,static和变量,typedef

新建一student类

只是用来声明Student这个类有哪些成员变量和方法

#import <Foundation/Foundation.h>

// @interface代表声明一个类
// : 代表继承
@interface Student : NSObject { // 成员变量要定义在下面的大括号中{}
    int age;
    int no;
}

// 在这里声明的所有方法都是公共

// age的get方法
// - 代表动态方法  + 代表静态方法
- (int)age;

// age的set方法
- (void)setAge:(int)newAge;

// no的get方法
- (int)no;

- (void)setAge:(int)newAge andNo:(int)newNo;
@end
#import "Student.h"

@implementation Student

- (int)age {
    NSLog(@"调用了getAge方法");
    return age;
}

- (void)setAge:(int)newAge {
    age = newAge;

    NSLog(@"调用了setAge方法");
}

- (int)no {
    return no;
}

- (void)setAge:(int)newAge andNo:(int)newNo {
    age = newAge;
    no = newNo;
}
@end

main.m

#import <Foundation/Foundation.h>

#import "Student.h"

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        // 创建一个Student对象:

        // 1.调用一个静态方法alloc来分配内存
        // 暂时把id当做是任何对象
//        Student *stu = [Student alloc];
//
//        // 2.调用一个动态方法init进行初始化
//        stu = [stu init];

        Student *stu = [[Student alloc] init];

        //[stu setAge:100];

        //int age = [stu age];

        //NSLog(@"age is %i", age);

        [stu setAge:17 andNo:1];

        NSLog(@"age is %i and no is %i", [stu age], [stu no]);

        // 释放对象
        [stu release];
    }
    return 0;
}

二、static和变量

#include <stdio.h>
// 如果在不同源文件出现了同名的内部变量,那么这些变量将互不干扰
static int b;

// 用static修饰的全部变量,可以称为内部变量
static int a;

void testA() {
    printf("one.c中的a=%d\n", a);
}

main.c

#include <stdio.h>

static int b;

void testA();

extern int a;

int main(int argc, const char * argv[])
{
    a = 10;

    testA();
    return 0;
}

int a;

// 完整地声明一个函数,需要用到extern关键字,表示引用一个外部函数
// extern void one();

// 其实extern又是废的,所以可以省略

// 定义一个one函数
// 完整地定义一个外部函数需要extern关键字
//extern void one() {
//    printf("调用了one函数\n");
//}

// 内部函数,需要用static关键字修饰,说明不能在其他文件中访问

三、typedef

#include <stdio.h>

// #define Integer int
// 给基本数据类型起别名
void test() {
    typedef int Integer;

    typedef Integer MyInteger;

    typedef unsigned int UInteger;

    int a = 10;

    Integer b = 9;

    UInteger c = 11;

    MyInteger d = 89;
}

// 给指针类型起别名
void test1() {
    char *s = "itcast";

    typedef char * String;

    String s1 = "itcast";
}

void test2() {
//    struct MyPoint {
//        float x;
//        float y;
//    };
//    struct MyPoint p = {10, 10};

    typedef struct {
        float x;
        float y;
    } Point;

    Point p = {10, 10};
}

void test3() {
    typedef struct {
        float x;
        float y;
    } Point;

    typedef Point * PP;

//    typedef struct Point {
//        float x;
//        float y;
//    } * PP;

    Point point = {10.0f, 20.0f};

    PP pp = &point;

    printf("x=%f, y=%f\n", pp->x, pp->y);
}

void test4() {
    typedef enum {
        spring,
        summer,
        autumn,
        winter
    } Season;

    Season s = spring;
}

int sum(int a, int b) {
    int c = a + b;
    printf("%d+%d=%d\n", a, b, c);
    return c;
}

// 给指向函数的指针定义一个别名SumPoint
void test5() {
    typedef int (*SumPoint)(int, int);

    SumPoint p = sum;

    (*p)(4, 5);
}

void test6() {
    typedef char * String1;
    #define String2 char *

    String1 s1,s2;
//    String1 s1;
//    String1 s2;

    String2 s3,s4;
//    char *s3, s4;
//    char *s3;
//    char s4;
}

int main(int argc, const char * argv[])
{

    int a, b;

//    int a;
//    int b;

    return 0;
}
时间: 2025-01-06 02:42:03

第一部分 1.12 OC基础语法-类的声明和实现,static和变量,typedef的相关文章

第一部分 1.10 OC基础语法-点语法、构造方法、结构体

一.点语法 新建一个person类 #import <Foundation/Foundation.h> @interface Person : NSObject { int _age; } - (void)setAge:(int)age; // 方法名是setAge: - (int)age; // 方法名是age // 方法名是setAge:andNo: // - (void)setAge:(int)newAge andNo:(int)no; @end #import "Person

第一部分 1.8 OC基础语法-Block

一.Block基本含义 Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 苹果官方建议尽量多用block.在多线程.异步任务.集合遍历.集合排序.动画转场用的很多 二.Blocks的定义 Blocks的定义: int (^MySum)(int, int) = ^(int a, int b) { return a+b; }; 定义了一个叫MySum的blocks对象,它带有两个int参数,返回int.等式右边就是block

【OC基础语法考试】

OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请OC老鸟来喷~~ 试题如下: 1.将包含以下三个字符串@“1hello“,@“2word“,@”3good“的数组改写为字典,数字部分作为key,英文部分作为value.(15) 2.建立一个数组对象,使用3个不同的方法,使其引用计数增加为4,输出这个值,然后保证内存能够正确释放.(15) 3.使用

oc总结 --oc基础语法相关知识

m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { theme manager @autoreleasepool { NSLog(@"Hello, World!"); } return 0; } 预处理指令import会自动检验头文件有没有被包含过,防止重复包含,NSLOG是日志输出,OC字符串以@开头,自动换行

【黑马程序员】OC基本语法——类与对象相关概念

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 最近在学OC的面向对象部分,可能是因为以前学Java和PHP时习惯了主流的面向对象思想,接触到OC的面向对象有很多说法都不习惯,查了很多东西,终于基本都搞清楚了,在这里小结一下. 一.类和对象 1.类:类是一个抽象概念,代表着一类事物,如:人,动物,交通工具等:这个和Java或PHP里类的概念没有区别. 其定义方法如下: @interface Student : NSObject { NSSt

OC基础语法之方法

看惯了c#的代码再去看Object-C的代码,总感觉有点懵逼,记录下OC的方法用法: 在OC中一个类中的方法有两种类型:实例方法(类似于非静态函数),类方法(类似非静态函数). 实例方法前用(-)号表明,类方法用(+)表明,通过下图可以看到,前面有一个(-)号,说明这是一个实例方法(nil关键字就相当于我们的null). 在OC中,调用一个方法相当于传递一个消息,这里的消息指的是方法名和参数. 所有的消息的分派都是动态的,这个体现了OC的多态性. 消息调用的方式是使用方括号. 如下面的例子中,向

【OC基础】01-类的声明和实现

一.语法简介 1.类 在OC中,一般用二个文件描述一个类,一个是.h文件,一个是.m文件爱你: 1>:.h文件是类的声明文件,用于声明变量和方法.类的声明使用关键字@interface和@end. 2>:.m文件是类的实现文件,用于实现.h类中声明的方法.类的实现使用关键字@implementation和@end. 2.方法 1> 方法的声明和实现,都必须以 + 或者 - 开头 + 表示类方法(静态方法) - 表示对象方法(动态方法) 2> 在.h中声明的所有方法作用域都是publ

OC面向对象编程-类的声明和对象的创建

一 OC类的声明和实现 1.接口的声明 @interface NewClassName: ParentClassName { 实例变量 ... } 方法的声明 ... @end 2.类的实现 @implementation NewClassName { 方法的实现 //code ... } @end

oc基础语法(一)

//oc的第一个程序1 #impor <Foundation/Foundation.h> 2 int main() 3 { 5 NSLog("@hello,Object - C"); // oc使用了NSLog打印 return 0; 6 } oc语言是一门基于c的语言,在c语言的基础之上添加了一门面向对象的语法,将繁琐的c语言变得更简单.oc语言全面兼容c语言,它在基本数据类型上又添加了六种数据类型,分别是BOOL.Boolean.nil.SEL.class.block.