OC-类与对象

1、类与对象

1.1定义带有多个带有形参的方法
1.2访问权限
    1.2.1属性(4种)
    1.2.2方法(2种)
#import <Foundation/Foundation.h>

@interface SHExample : NSObject
{
    int _i0;//_i0的访问权限是保护的,默认状态
    @public
    int _i1;//_i1的访问权限是公有的。一般不建议使用
    @package
    int _i2;//_i2的访问权限是包内的。
    @protected
    int _i3;//_i3的访问权限是保护的
    @private
    int _i4;//_i4的访问权限是私有的
}
-(void)method;
@end
#import "SHExample.h"

@implementation SHExample
{
    @public//在此处,该关键字不起作用
    int _i5;//私有的
}
-(void)method
{
    [self privateMethod];
    NSLog(@"这是一个公有方法");
}
-(void)privateMethod//在interface中没有声明,直接写出方法的函数体属于私有方法
{
    NSLog(@"这是一个私有的方法");
}
@end

main函数:

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

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        SHExample *e = [SHExample alloc];
        //e->_i0 = 10;//保护的
        e->_i1 = 20;//公有的
        NSLog(@"%d", e->_i1);
        e->_i2 = 30;//包内的
        NSLog(@"%d", e->_i2);
        //e->_i3 = 40;//保护的
        //e->_i4 = 50;//私有的
        //e->_i5 = 60;//私有的

        [e method];//method是公有方法
        //[e privateMethod];//privateMethod是私有方法
    }
    return 0;
}
1.3属性:由关键字(property)自动生成的,成员变量的声明+setter+getter

SHFraction类:

#import <Foundation/Foundation.h>

@interface SHFraction : NSObject
{
    int _n;
    int _d;
}
@property int n;
//-(void)setN:(int)n;
//-(int)n;
@property int d;
//-(void)setD:(int)d;
//-(int)d;
-(void)show;
@end
#import "SHFraction.h"

@implementation SHFraction
@synthesize n = _n;
//-(void)setN:(int)n
//{
//    _n = n;
//}
//-(int)n
//{
//    return _n;
//}
@synthesize d = _d;
//-(void)setD:(int)d
//{
//    _d = d;
//}
//-(int)d
//{
//    return _d;
//}
-(void)show
{
    NSLog(@"%d/%d", _n, _d);
}
@end

SHFraction1类:

#import <Foundation/Foundation.h>

@interface SHFraction1 : NSObject
//{//iOS5.0以后自动生成成员变量的声明
//    int _n;
//    int _d;
//}
@property int n;
@property int d;
-(void)show;
@end
#import "SHFraction1.h"

@implementation SHFraction1
@synthesize n;
@synthesize d;
-(void)show
{
    NSLog(@"%d/%d", n, d);
}
@end

SHFraction2类:

#import <Foundation/Foundation.h>

@interface SHFraction2 : NSObject
@property int n;
@property int d;
-(void)show;
@end
#import "SHFraction2.h"

@implementation SHFraction2
//@synthesize n;//iOS6.0以后省略
//@synthesize d;
-(void)show
{
    NSLog(@"%d/%d", self.n, self.d);
}
@end

SHFraction3类:

#import <Foundation/Foundation.h>

@interface SHFraction3 : NSObject
@property int n;
@property int d;
@property(readonly) double value;
-(void)show;
@end
#import "SHFraction3.h"

@implementation SHFraction3
-(double)value
{
    return self.n * 1.0 / self.d;
}
-(void)show
{
    NSLog(@"%d/%d", self.n, self.d);
}
@end

创建一个SHTeacher类:

SHTeacher.h
#import <Foundation/Foundation.h>

@interface SHTeacher : NSObject
{
    //姓名、所在系、所教课程
    NSString *_name;
    NSString *_department;
    NSString *_course;
}
//有一个show方法
-(void)setName:(NSString*)name;
-(NSString*)name;
-(void)setDepartment:(NSString*)department;
-(NSString*)department;
-(void)setCourse:(NSString*)course;
-(NSString*)course;
-(void)show;

-(void)setName:(NSString *)name andDepartment:(NSString*)department andCourse:(NSString*)course;
@end
SHTeacher.m
#import "SHTeacher.h"

@implementation SHTeacher
-(void)setName:(NSString *)name
{
    _name = name;
}
-(NSString *)name
{
    return _name;
}
-(void)setDepartment:(NSString *)department
{
    _department = department;
}
-(NSString *)department
{
    return _department;
}
-(void)setCourse:(NSString *)course
{
    _course = course;
}
-(NSString *)course
{
    return _course;
}
-(void)show
{
    NSLog(@"姓名:%@,所在系:%@,所教课程:%@", _name, _department, _course);
}
-(void)setName:(NSString *)name andDepartment:(NSString *)department andCourse:(NSString *)course
{
    _name = name;
    _department = department;
    _course = course;
}
@end

创建一个SHStudent类:

SHStudent.h
#import <Foundation/Foundation.h>

@interface SHStudent : NSObject
{
    //姓名、年龄、学号、家庭住址
    NSString *_name;
    int _age;
    int _ID;
    NSString *_address;
}
//有一个show方法
-(void)setName:(NSString*)name;//有一个形参的方法
-(NSString*)name;//无参方法
-(void)setAge:(int)age;
-(int)age;
-(void)setID:(int)ID;
-(int)ID;
-(void)setAddress:(NSString*)address;
-(NSString*)address;
-(void)show;

-(void)setName:(NSString *)name andAge:(int)age;//有两个形参的方法
-(void)setName:(NSString *)name andAge:(int)age andID:(int)ID andAddress:(NSString*)address;//有四个形参的方法
@end
SHStudent.m
#import "SHStudent.h"

@implementation SHStudent
-(void)setName:(NSString *)name
{
    _name = name;
}
-(NSString *)name
{
    return _name;
}
-(void)setAge:(int)age
{
    _age = age;
}
-(int)age
{
    return _age;
}
-(void)setID:(int)ID
{
    _ID = ID;
}
-(int)ID
{
    return _ID;
}
-(void)setAddress:(NSString *)address
{
    _address = address;
}
-(NSString *)address
{
    return _address;
}
-(void)show
{
    NSLog(@"姓名:%@,年龄:%d,学号:%d,家庭住址:%@", _name, _age, _ID, _address);
}

-(void)setName:(NSString *)name andAge:(int)age
{
    _name = name;
    _age = age;
}
-(void)setName:(NSString *)name andAge:(int)age andID:(int)ID andAddress:(NSString *)address
{
    _name = name;
    _age = age;
    _ID = ID;
    _address = address;
}
@end

思考练习:

创建一个教室类
四个属性:名字、桌子的张数、椅子的把数、电脑的台数
方法:
显示该教室的所有属性
判断教室能否使用,这个教室的椅子数是不是大于等于桌子数

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
解析:

#import <Foundation/Foundation.h>

@interface SHClassroom : NSObject
@property NSString *name;
@property int table;
@property int chair;
@property int computer;
-(void)show;
-(BOOL)isTableWithChair;
@end
#import "SHClassroom.h"

@implementation SHClassroom
-(void)show
{
    NSLog(@"教室名称:%@,桌子数:%d,椅子数:%d,电脑数:%d", self.name, self.table, self.chair, self.computer);
}
-(BOOL)isTableWithChair
{
    return self.chair >= self.table;
}
@end
#import <Foundation/Foundation.h>
#import "SHClassroom.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        SHClassroom *c = [SHClassroom alloc];
        c.name = @"第一教室";
        c.table = 20;
        c.chair = 10;
        c.computer = 20;

        [c show];
        NSLog(@"%@使用能力为:%@", c.name, [c isTableWithChair]?@"具备":@"不具备");
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值