Objective-c 类 方法声明 初始化及调用

//
//  Student.h
//  OOP
//
//  Created by acgity on 16/5/16.
//  Copyright © 2016年 acgity. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef enum {
    male,female
} SEX;

@interface Student : NSObject
{
    @public
    NSString *_name;
    int _age;
    SEX _sex;
}

+(void)walk;
-(void)talk;
-(instancetype)init;
-(instancetype)initWithName:(NSString *)name withAge:(int)age withSex:(SEX)sex;

@end

//
//  Student.m
//  OOP
//
//  Created by acgity on 16/5/16.
//  Copyright © 2016年 acgity. All rights reserved.
//

#import "Student.h"

@implementation Student

-(instancetype)init{
    self = [super init];
    if(self != nil){
        self -> _name = @"acgity";
        self -> _age = 23;
        self -> _sex = female;
    }
    return self;
}

-(instancetype)initWithName:(NSString *)name withAge:(int)age withSex:(SEX)sex{
    self = [super init];
    if(self != nil){
        self->_name = name;
        self->_age = age;
        self->_sex = sex;
    }
    return self;
}

-(void)talk {
    NSString *flag = self->_sex == male ? @"girl" : @"boy";
    NSLog(@"Hi,I‘m a %@ named %@ %d years old...",flag,_name,_age);
}

+(void)walk {
    NSLog(@"I‘m walking now...");
}
@end

//
//  main.m
//  OOP
//
//  Created by acgity on 16/5/16.
//  Copyright © 2016年 acgity. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Student.h"

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

    Student *df = [[Student alloc] init];
    [df talk];
    [Student walk];

    Student *ini = [[Student alloc] initWithName:@"tony" withAge:32 withSex:male];
    [ini talk];
    [Student walk];

    return 0;
}


2016-05-16 18:46:34.287 OOP[3140:120047] Hi,I‘m a boy named acgity 23 years old...

2016-05-16 18:46:34.288 OOP[3140:120047] I‘m walking now...

2016-05-16 18:46:34.288 OOP[3140:120047] Hi,I‘m a girl named tony 32 years old...

2016-05-16 18:46:34.288 OOP[3140:120047] I‘m walking now...

Program ended with exit code: 0

时间: 2024-12-29 11:28:43

Objective-c 类 方法声明 初始化及调用的相关文章

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

[掌握]01-类的声明和实现 类: 一类事物共同特征和行为的抽象 大卡车 小轿车 挖掘机 车类: Car 共同的特征(属性): 颜色 速度 轮子 共同的行为: 跑 停止 对象: 类的具体的个体 东风21D(车类的对象) 解放大卡车(车类的对象) BYD (车的对象) 时风 (车的对象) 2.类的定义 结构体定义 struct Student{ }; ---->定义一个Student 结构体 类的定义分为两部分: 1)类的声明(规定当前类的:类名.属性.行为) @interface 类名:父类名

1217.2——定义一个类+方法声明调用

新建一个类 new file  ->cocoa class  (父类NSObject) .h文件 用来定义属性和方法 .m文件 用来具体实现 方法声明: 1 #import <Foundation/Foundation.h> 2 @interface Person : NSObject{ 3 NSString *name; 4 int age; 5 NSString *address; 6 } 7 -(void)useTools; //无参无返回值的方法声明 8 -(void)setNa

Objective c类的初始化

Objective c中实现类的初始化要先重载父类的init方法: 1.首先调用[super init]使用父类的方法进行初始化.将对象赋给self 2.假设self不为nil即父类初始化成功,接着进行本类的初始化 3.返回self给调用者 @implementation Test -(id)init {     if(self = [super init])     {         //本类的初始化代码 //..........     }     return self;      }

李洪强iOS开发之有参方法的声明实现和调用

// //  main.m //  09 - 有参方法的声明实现和调用 // //  Created by vic fan on 16/7/5. //  Copyright © 2016年 李洪强. All rights reserved. // /** *  C语言函数 *  int sum(int a, int b){ reture a+b; } * 有参有返回值的格式: 带一个参数: 方法的声明 - (返回值类型)方法名: (参数类型)参数名; 方法的实现 - (返回值类型)方法名: (参

java动态加载指定的类或者jar包反射调用其方法

序言 有时候,项目中会用到java动态加载指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大降低,更加的模块化,代码利用率更高.模式中的代理模式就用到java的这一机制.下边就让我们通过代码来看看如何实现此功能. 代码详细 package loadjarclass; import java.io.File; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoad

java动态载入指定的类或者jar包反射调用其方法

序言 有时候.项目中会用到java动态载入指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大减少,更加的模块化.代码利用率更高.模式中的代理模式就用到java的这一机制. 下边就让我们通过代码来看看怎样实现此功能. 代码具体 package loadjarclass; import java.io.File; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoa

基础学习day06---面向对象二---static,类的初始化和调用顺序、单例模式

一.static关键字 1.1.static关键字 静态:static用法:是一个修饰符,用于修饰成员(成员变量,成员函数)static 修饰的内容,所有对象共享当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以被类名.静态成员 package com.day06; /** * 人类 * @author Administrator *静态:static *用法:是一个修饰符,用于修饰成员(成员变量,成员函数) *static 修饰的内容,所有对象共享 *当成员被静态修饰后,就多

条款十三: 初始化列表中成员列出的顺序和它们在类中声明的顺序相同

template<class t> class array { public: array(int lowbound, int highbound); ... private: vector<t> data; // 数组数据存储在vector对象中 // 关于vector模板参见条款49 size_t size; // 数组中元素的数量 int lbound, hbound; // 下限,上限 }; template<class t> array<t>::a

关于“如何做到在一个类内不通过创建另一个类的对象,却调用另一个类的方法”的问题

通常,我们在java中通过实例化一个类来调用该类的方法,但是,如果有多个类都要调用这个类地方法,是不是要在每个主调类里面都创建一个被调用类的对象呢? 如果这样做,会不会因为多次实例化而影响程序的执行效果呢? 答案是:没必要多次创建被调用类的对象,而且多次实例化还可能会影响程序执行效果. 解决问题的办法是:在每一个主调类里面各写一个构造方法,形参是被调用类的对象, public ShopCartItem(ShopCart shopcart) { super(); this.shopcart=sho