本文介绍: 文章目录理解封装封装的目的访问控制访问控制介绍表格良好的封装实例实现一个良好的封装接口实现结果解释思考理解封装封装是面向对象三大特征之一(继承 多态 封装) 它指的是 将对象状态信息隐藏对象内部,不允许外部程序直接访问对象内部信息 而只能通过该类方法实现内部信息操作访问封装的目的隐藏类的实现细节。->让使用者只能通过事先预定的方法访问数据,从而可以在该方法加入控制逻辑限制成员变量的不合理访问。->可进行数检查,从而有利于保证对象信息的完整性。便于修改

理解封装

封装的目的

访问控制

 OC提供的访问控制代表了四个访问控制等级

在这里插入图片描述

访问控制介绍

表格

在这里插入图片描述

** 对于局部变量而言,其作用域就是他所在的方法,不可能被其他类昂问,因此不能使用访问控制符修饰**

良好的封装实例

实现一个良好的封装

接口

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
//良好封装的接口

@interface FKperson : NSObject {
    @private //限制成员变量只能被方法调用赋值
    NSString* _name;
    int _height;
}
- (void) setName: (NSString*) name;
- (NSString*) getName;
- (void) setHeight: (int) height;
- (int) getHeight;
@end

NS_ASSUME_NONNULL_END

实现

#import "FKperson.h"

@implementation FKperson
//良好封装的实现
// 设置名字
- (void) setName: (NSString *) name {
    if ([name length] &gt; 6 || [name length] <2) {
        NSLog(@"长度不符合请重新输入");
        return;
    } else {
        _name = name;
    }
}
// 获取名字
- (NSString *) getname {
    return _name;
}

// 设置身高
- (void) setHeight: (int) height {
    if (height > 200 || height < 0) {
        NSLog(@"身高不符合");
    } else {
        _height = height;
    }
}
// 获取身高
- (int) getHeight {
    return _height;
}
@end

结果

在这里插入图片描述

解释思考

正正如上面程序注释的,main0函数不可直接修改 FKPerson 对象的name 和age 两个
成员变量,只能通过各自对应setter 方法来设置两个成员变量的值。当使用 setter 方法来
设置 name 和age 两个成员变量时,就允许程序员setter 方法中增加自己控制逻辑,从而
保证 FKPerson 对象的name 和age 两个成员变量不会出现与实际不符的情形,

如有错误 评论区指正

原文地址:https://blog.csdn.net/weixin_61639290/article/details/124850068

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_42208.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注