码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员----三大特性(封装、继承、多态)

时间:2015-03-09 00:27:44      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

一、封装(set方法和get方法)

  • 封装的好处:

 过滤掉不合理的值,屏蔽内部的赋值细节,让外界不比关心内部的细节。
  • set方法:

 1.作用:提供一个方法给外界设置成员变量的值
 2.命名规范:
   1> 方法名必须是set开头
   2> set后面跟上成员变量的名称,并且成员变量的首字母必须是大写
   3> 返回值一定是void
   4> 一定要接受一个参数,而且参数类型跟成员变量的类型一致
   5> 形参名称不能和成员变量名一样

 

例:

- (void)setAge : (int) newAge; // 方法声明

- (void)setAge : (int) newAge // 方法实现
{
  if (newAge <= 0)
{
  newAge = 1;  // 对传入的参数进行过滤 
}  
age = newAge;
}
  •  get方法:

 1.作用:返回对象内部的成员变量值
 2.命名规范:
   1> 肯定有返回值,并且返回值类型肯定和成员变量类型一致
   2> 方法名和成员变量名一样
   3> 不需要接受任何参数

例:

- (int) age; // 方法的声明

- (int) age // 方法的实现
{
  return age;  
}
  • 成员变量的命名规范

成员变量的命名规范:一定要以下划线“_”开头;

作用:1.让成员变量和get方法的名称区分开

         2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量

代码练习:

#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    // 成员变量尽量不要用@public保证数据的安全性,没有@public就不能通过   对象->成员变量   来赋值(访问),这是可以提供一个set方法给外界设置成员变量的值(虽然没有了@public,但是在对象方法内还是能直接访问成员变量的)
    // @public
    int age;
}

- (void)setAge:(int)newAge;

- (int)age;

- (void)study;
@end

@implementation Student

// set方法的实现
- (void)setAge:(int)newAge
{
    // 对传进来的参数进行相应的过滤
    if(newAge <= 0)
    {
        newAge = 1;
    }
    
    age = newAge;
}

// get方法的实现
- (int)age
{
    return age;
}

- (void)study
{
    NSLog(@"%d岁的学生在学习", age); // 这里的使用age即使在声明成员变量时没有写@public也可以直接访问(对象方法内部可以直接访问成员变量)
}
@end

int main()
{
    Student *stu = [Student new];
    
    // 通过调用set方法对对象内部的成员变量进行赋值
    [stu setAge:-10];
    
    [stu study];
    
    // 由于没有了@public这是调用get方法获取对象内部的成员变量值
    NSLog(@"这个学生的年龄是%d", [stu age]);
    
    return 0;
}

 

 

黑马程序员----三大特性(封装、继承、多态)

标签:

原文地址:http://www.cnblogs.com/unique-ios/p/4322564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!