<02>【掌握】01-类的声明和实现+【掌握】13-创建一个对象并访问成员变量+【掌握】14-无参方法声明实现及调用+【掌握】15-有参方法声明实现及调用+

【掌握】01-类的声明和实现

类:  

        一类事物共同特征和行为的抽象

        大卡车    小轿车    挖掘机

        车类: Car
        共同的特征(属性): 颜色   速度   轮子
        共同的行为: 跑     停止

   对象:

        类的具体的个体

        东风21D(车类的对象)

        解放大卡车(车类的对象)

        BYD (车的对象)

        时风 (车的对象)

     2、类的定义

        结构体定义
        struct Student{

        };   ---->定义一个Student 结构体

        类的定义分为两部分:

        1)类的声明(规定当前类的:类名、属性、行为)

           @interface 类名:父类名
           {
              //定义类的属性
            }

            //类的行为

            @end

        2)类的实现(实现具体行为)

           @implementation 类名

            //行为的具体实现

           @end
 
#import <Foundation/Foundation.h>

//车的类的声明
@interface Car:NSObject
{
   //类的属性
    int lunzi;  //车的轮子
    NSString *color;//车的颜色
    int speed;  //车的速度
}
   //类的行为
@end

//类的实现
@implementation Car                  //这句话绝对不能省
//行为的具体描述
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
    }
    return 0;
}

【掌握】13-创建一个对象并访问成员变量

知识点:
            创建一个对象并运行成功
   在OC中用已经存在的类,如何创建一个对象?

       回顾C的结构体,结构体如何创建结构体变量

       struct Student stu;  //stu就是结构体变量

       struct Student *pstu; //pstu = &stu;

       结构体指针访问 结构体变量中的成员变量值
       pstu->age = 20;  //给age 设置 值 是 20

   OC中对象创建

       [Car new];
       //做了3件事情
       // 1)向计算机申请内存空间
       // 2) 给类中的每一个成员初始化值
       // 3)返回新申请的空间的首地址

       //理解方式一:
       //定义了一个Car类型的指针变量
       //指针变量指向新申请的内存空间

       //理解方式二:
       //用Car类实例化了一个实例对象,对象的名称是p
         Car *p = [Car new];
 
#import <Foundation/Foundation.h>

//车的类的声明                 车的图纸(类)
@interface Car:NSObject
{
    //类的属性
    @public;

    int lunzi;  //车的轮子
    NSString *color;//车的颜色
    int speed;  //车的速度
}
//类的行为
@end

//类的实现
@implementation Car
//行为的具体描述
@end

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

        //创建Car类型的对象 car1

        Car *car1=[Car new];

        //创建一个对象 实质还是指针 (用指针间接访问实例变量值)
        car1->lunzi = 3;
        car1->speed = 150;
        car1->color = @"蓝色";

        //查看车的信息
        NSLog(@"轮子:%d,速度:%d ,颜色:%@",car1->lunzi,car1->speed,car1->color);

    }
    return 0;
}
2015-07-16 10:22:01.024 13-创建一个对象并访问成员变量[586:16494] 轮子:3,速度:150 ,颜色:蓝色

【掌握】14-无参方法声明实现及调用

知识点:  无参方法声明实现及调用
C语言的函数分类:
   无参无返回值
   无参有返回值
   有参无返回值
   有参有返回值

   类和对象的概念

   类的定义

     @interface Car:NSObject
     {
         int lunzi;
         int speed;
         NSString *pp;
     }
      //行为
      //车跑得方法   方法名是run
      -(void)run;   //定义了一个无参无返回值的方法
      -(void)stop;  

     @end

     //类的实现
     @implementation Car

      //方法的具体的实现
      -(void)run{

           NSLog(@"车跑在乡间的大道上");

      }

      -(void)stop{

          NSLog(@"咯吱,车停了!");

      }

     @end

   对象的创建
 
#import <Foundation/Foundation.h>
//Car类的声明
@interface Car:NSObject
{
    int lunzi;
    int speed;
    NSString *pp;
}
//行为
//车跑得方法   方法名是run
-(void)run;   //定义了一个无参无返回值的方法
-(void)stop;

@end

//类的实现
@implementation Car

//方法的具体的实现
-(void)run{

    NSLog(@"车跑在乡间的大道上");

}

-(void)stop{

    NSLog(@"咯吱,车停了!");

}

@end

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

        //创建了一个对象 对象名 car
        Car *car = [Car new];

        //调用方法
        [car run];

        //调用stop方法

        //向car对象发送stop消息
        [car stop];

    }
    return 0;
}
2015-07-16 10:30:02.558 14-无参方法声明实现及调用[603:18838] 车跑在乡间的大道上
2015-07-16 10:30:02.559 14-无参方法声明实现及调用[603:18838] 咯吱,车停了!

【掌握】15-有参方法声明实现及调用

知识点:

         看着伪代码实现方法

         知道方法声明格式

          知道实例变量书写格式
 C的函数

    int sum(int x,int y){

        return x+y;

    }

   OC的方法

    -(返回值类型)方法名1:(参数类型) 参数名;   //有一个参数的方法
    -(返回值类型)方法名1:(参数类型1) 参数名1  and:(参数类型2) 参数名2;   //有2个参数的方法

    //sum ----> OC的方法

    -(int)sum:(int) x and:(int) y;  //方法的声明

    //有参方法的使用注意:
    // 方法的类型   (-)对象方法
    // 方法的返回值: int 类型
    // 方法的参数是: x   y
    // 参数的类型: 第一个 int  第二个 int
    // 方法名:  sum:   and:  (冒号是方法名的一部分)

    //方法的实现

    -(int)sum:(int) x and:(int) y{

        return x+y;

    }
 
#import <Foundation/Foundation.h>

//写一个计算器的类
// 类名:Caculator
// 实例变量  num1 num2
// 行为: + - * /

@interface Caculator : NSObject
{
    //实例变量书写规范
    @public
    int _num1;  //数据类型  _实例变量名
    int _num2;
}

//写一个没有参数的方法
-(int)sum;  //没有参数,返回值是int类型
//有参方法的声明
-(int)sum:(int) x and:(int) y;
@end

@implementation Caculator
//方法名 sum
-(int)sum{

   //计算 _num1 + _num2;
    return _num1 + _num2;
}
//方法名 sum: and:
-(int)sum:(int) x and:(int) y{

    return x + y;
}
@end

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

        //创建对象
        Caculator *ca = [Caculator new];

        //对象访问实例变量
        ca->_num1 = 12;
        ca->_num2 = 30;

        //调用无参方法
        int s = [ca sum];

        //调用有参的方法
        s = [ca sum:34 and:23];
        NSLog(@"s = %d",s);

    }
    return 0;
}
2015-07-16 10:36:47.224 15-有参方法声明实现及调用[616:20947] s = 57
 类名:苹果手机(iPhone)
 属性:颜色(_color ), 大小(_size), _cpu
 行为:查看本机信息(aboutMyPhone),打电话(call), 发短信(sendMessage)

 实现该类,并:
 1)查看本机信息
 2)打电话给10086
 3)给10086发短信问联通的客服电话是多少
#import <Foundation/Foundation.h>
//iPhone 类的声明
typedef enum color{kColorWhite,kColorBlack,kColorTHJ} iColor;

@interface iPhone:NSObject
{
  //类的属性(实例变量、成员变量)
    @public
    //手机的颜色
    iColor _color;
    //手机的尺寸
    float _size;
    //手机的CPU
    NSString *_cpu;

}
  //类的行为(方法)的声明
//查看手机的信息  实质:把手机的实例变量值打印出来
-(void)aboutMyPhone;
//打电话,需要一个参数,参数就是电话号码(字符串)
-(void)callPhone:(NSString *) telNum;
//发短信,给指定号码 发送 短信,短信的内容可以指定
-(void)sendMessage:(NSString *)telNum andContent:(NSString *) content;
-(void)sendMessage:(NSString *)telNum :(NSString *) content :(int) age;        //在这个代码中没有用到这个方法,但给自己一个思考,二个以上的参数怎么定义
//
@end

//iPhone 类的实现
@implementation iPhone
//类的行为(方法)的声明
//查看手机的信息  实质:把手机的实例变量值打印出来
-(void)aboutMyPhone{

    NSLog(@"颜色:%d,尺寸:%.2f,cpu:%@",_color,_size,_cpu);

}
//打电话,需要一个参数,参数就是电话号码(字符串)
-(void)callPhone:(NSString *) telNum{

    NSLog(@"给 %@ 打电话!",telNum);

}

//发短信,给指定号码 发送 短信,短信的内容可以指定
-(void)sendMessage:(NSString *)telNum andContent:(NSString *) content{

    NSLog(@"给 %@ 发送短信,短信内容:%@ .",telNum,content);

}
@end

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

        //创建对象
        iPhone *iphone7Plus = [iPhone new];

        //设定手机的信息
        iphone7Plus->_color = kColorTHJ;
        iphone7Plus->_cpu = @"A20";
        iphone7Plus->_size = 7.9f;

        //调用方法
        [iphone7Plus aboutMyPhone];

        //给10086打电话
        [iphone7Plus callPhone:@"10086"];

        //给10086发短信,
        [iphone7Plus sendMessage:@"10086" andContent:@"您好,请问联通的客服电话号码是多少?"];

    }
    return 0;
}
2015-07-16 10:46:44.531 15-苹果手机(Iphone)类[629:23162] 颜色:2,尺寸:7.90,cpu:A20
2015-07-16 10:46:44.532 15-苹果手机(Iphone)类[629:23162] 给 10086 打电话!
2015-07-16 10:46:44.532 15-苹果手机(Iphone)类[629:23162] 给 10086 发送短信,短信内容:您好,请问联通的客服电话号码是多少? .
时间: 2024-10-13 04:54:28

<02>【掌握】01-类的声明和实现+【掌握】13-创建一个对象并访问成员变量+【掌握】14-无参方法声明实现及调用+【掌握】15-有参方法声明实现及调用+的相关文章

JAVA的StringBuffer类(转载整理)____非常重要的一个类,线程安全,不用每次创建一个对象,以及和String的区别

核心部分转载自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616330.html StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类. 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入.删除等操作,使用StringBuffer要更加适合一些. 在S

JavaSE7基础 类中成员方法 局部与成员变量名字相同时,使用this访问成员变量

版本参数:jdk-7u72-windows-i586注意事项:博文内容仅供参考,不可用于其他用途. 代码 class Test{ String name; //借助公有的成员方法 访问私有的成员方法 public void setName(String name){ this.name=name; //当前类的对象中的成员变量name = 函数参数列表中局部变量中的name //this 当前类的对象, t对象调用setName方法,this就代表了t } } class Demo{ publi

JavaSE8基础 类中的public成员方法 可以返回 private static类型的成员变量

礼悟:    好好学习多思考,尊师重道存感恩.叶见寻根三二一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼强身心,诚劝且行且珍惜. javaSE:8                                    os:windows7 x64                                   ide:MyEclipse 2017 代码 package com.jizuiku; /** * 提供成员变量 与 成员方法 * * @author

Java知识系统回顾整理01基础02面向对象01类和对象

一.面向对象实例--设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女 所有这些英雄,都有一些共同的状态 比如,他们都有名字,hp,护甲,移动速度等等 这样我们就可以设计一种东西,叫做类,代表英雄这样一种事物 类: 英雄(Hero) 状态: 名字, 血量,护甲,移动速度 ? ? 注:?本例用到了3种数据类型 分别是 String(字符串),float(浮点数), int(整数) 注:?这个类没有主方法,不要试图运行它. 并不是所有的类都是有主方法的. ? ? ? ?

类的成员变量和属性描述

0x 01 .类的属性 property 类的属性即是通过@property声明的属性.属性是类型为objc_property的一个结构体.该结构体封装了属性的信息 比如属性的名字,属性的类型,属性的可读写,非原子/原子属性等. 1).获取一个类的属性列表方法:OBJC_EXPORT objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)入参是一个类的class对象,一个是用于统计属性数量的整形数的地址

【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定义 (1) 接口部分定义格式 接口部分定义格式 : @interface className : superClassName { type _variableName; ... ... } - (type) methodName : type parameterName; @end -- 接口定义

类的成员变量初始化总结

1. C++变量的初始化方式 首先把需要初始化的成员变量分为几类: ?  一般变量(int) ?  静态成员变量(static int) ?  常量(const int ) ?  静态常量(static const int) 对应的初始化方式是: ?  一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化 ?  静态成员变量必须在类外初始化 ?  常量必须在初始化列表里初始化 ?  静态常量必须只能在定义的时候初始化(定义时直接初始化) 举一个简单的例子: [cpp] v

在类中成员变量的作用域类型

作用域类型一共有四种 1,@public 在任何地方都能直接通过成员变量名直接访问成员变量.(不推荐使用) 2,@private 只能在当前类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问.(@implementation中被声明成员变量的默认类型) 3,@protected 只能在当前类及其子类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问.(@interface中被声明成员变量的默认类型) 4,@pa

Objective-C类成员变量深度剖析

目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objective-C类不能动态添加成员变量 总结 看下面的代码,考虑Objective-C里最常见的操作之一——类成员变量访问. - (void)doSomething:(SomeClass *)obj { obj->ivar1 = 42; // 访问obj对象的public成员变量 int n = sel