重写set或get方法

【学习笔记】【OC语言】set方法和get方法

1.set方法
作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
命名规范:
方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写
形参名称不要跟成员变量同名
2.get方法
作用:返回对象内部的成员变量
命名规范:get方法的名称一般就跟成员变量同名
3.成员变量的命名规范
成员变量都以下划线 _ 开头
可以跟get方法的名称区分开
可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量

*第一种实现方法代码示例

 1 #import <Foundation/Foundation.h>
 2 // 声明
 3 @interface Car : NSObject
 4 {
 5     int _wheels; // 轮子个数
 6 }
 7 /*set方法*/
 8 - (void) setWheels:(int)wheels;
 9 /*get方法*/
10 - (int) wheels;
11 @end
12 
13 @implementation Car
14 // set方法的实现
15 - (void) setWheels:(int)wheels
16 {
17     // 对外面传进来的轮子数进行过滤
18     if (wheels<=0)
19     {
20         wheels = 1;
21     }
22     
23     _wheels = wheels;
24 }
25 
26 // get方法的实现
27 - (int) wheels
28 {
29     return _wheels;
30 }
31 @end

*第二种实现方法代码实例

@property的时候就已经创建了相应的set和get方法
//  Person.h
//  get/set方法重写

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int age;
@property NSString * name;

@end
@implementation Person
/*
    1. 当想控制外界传入的一些数据的合理性、安全性的时候我们就需要手动重新get/set方法
 */
- (void)setAge:(int)age
{
    _age = age;
    if (_age < 0) {
        _age = 0;
    }
}
/*
    2. 当我们手动 同时 实现了get/set方法的时候,property就不会自动给我们生成成员变量
 */
- (int)age
{
    return _age;    //_age报错
}

注意⚠️:

  1. 这里如果只重写了set或者get方法时候,成员变量_age是正确的,系统不会报错。但是如果同时重写了set和get方法,系统就会报错,说找不到_age这个成员变量。
  1. 用@property声明的成员属性,相当于自动生成了setter getter方法,同时重写了set和get方法,与@property声明的成员属性就不是一个成员属性了,是另外一个实例变量,而这个实例变量需要手动声明
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,087评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,925评论 1 10
  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 1,287评论 0 2
  • 不知不觉中,一周又要结束了,今天是星期六,忙碌了整个星期 睡个懒觉起来 ,感觉真好。周末,固然应该休息,娱乐...
    浅唱梦想520阅读 231评论 5 3