OC面向对象封装

OC面向对象封装

一、面向对象和封装

  面向对象的三大特性:封装(成员变量),继承,多态

  在OC语言中,使用@interface和@implementation来处理类.

  

  @interface就好像暴露在外面的时钟表面,像外界提供展示以及接口,@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来.

二、Set方法

  在研发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public,@protected等关键字修饰,而是使用Set方法来为对象提供成员变量值,在Set方法的内部也可以对一些不合理的赋值进行筛选过滤.

  Set方法的作用:为外界提供一个设置成员变量值的方法

  命名规范:

  1>方法名必须以set开头

  2>set后面跟上成员变量的名称,首字母大写

  3>返回值一定是void

  4>一定要接收一个参数,而且参数类型需要和成员变量的类型一致

  5>形参名不能和成员变量名一样(苹果官方推荐成员变量名前加_以示区分)

Set方法的好处:

  1>不让数据暴露在外,保证了数据的安全性

  2>对设置的数据进行过滤

Set方法使用示例:

  set方法的声明:

#import<Foundation/Foundation>
@interface Person : NSObject{

    //这里不再使用@public关键字
    NSInteger _age;
}
-(void)setAge:(NSInteger) age;
-(void) print;
@end

  set方法的实现

#import "Person.h"
@implementation Person
//set方法的实现
-(void) setAge:(NSInteger) age{
    _age=age;
}-(void)print{NSLog(@"age=%ld",_age);}
@end 

  测试程序

#import <Foundation/Foundation>
#import "Person.h"
int main(){
    Person *person=[[Person alloc] init];
    //使用set方法设置person类对象age变量的值为10
    [person setAge:10];
return 0;
}

三、Get方法

  Get方法的作用:为调用者返回对象内部的成员变量

  命名规范:

    1>一定要有返回值,返回值的类型和成员变量的类型一致

    2>方法名和成员变量名一样

    3>不需要接收任何参数

  Get方法的使用示例:

    get方法的声明

#import<Foundation/Foundation>
@interface Person : NSObject{

    NSString * _name;
}
-(void)setName:(NSString) name;
-(NSString *) name;
@end

  get方法的实现

#import "Person.h"
@implementation Person
//set方法的实现
-(void) setAge:(NSInteger) age{
    _name=name;
}
-(void) name{
    return _name;
}
@end

  测试程序

#import <Foundation/Foundation>
#import "Person"
int main(){
    Person *person=[[Person alloc] init];
    //使用set方法设置person类对象name变量的值
    [person setName:@"张三"];
    NSLog(@"%@",[person name]);
return 0;
}

  注意:

    1>在实际开发中,不一定set和get方法都会提供,如果内部的成员变量比如学生的学号这样的数据值允许外界读取,但是不允许修改的情况,则通常只提供get方法而不提供set方法

    2>成员变量名的命名以下划线开头,get方法名不需要带下划线,使用下划线开头有两个好处:一是于get方法名区分开来;二是可以和一些其他的局部变量区分开来,下划线开头的变量通常都是类的成员变量.

四、self关键字

  1>self是一个指针,谁调用了当前方法,self就指向谁

  2>出现在对象方法中,就代表当前对象,出现挂在类方法中,就代表当前类  

  3>self的用途:

    可以利用self.或self->成员变量名来访问当前对象内部的成员变量(仅在对象方法中)

    [self 方法名];可以调用其他的对象方法或者是类方法

练习题 

  要求:设计一个成绩类,OC成绩,C成绩,可以实现总分,平均分功能

  

时间: 2024-10-18 13:34:31

OC面向对象封装的相关文章

OC面向对象—封装

一.面向对象和封装 面向对象的三大特性:封装(成员变量).继承和多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴露在外面的时钟表面,像外界提供展示以及接口.@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来. 二.Set方法 在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public.@protected等关键字修饰,而是使用Set方法来为对象提供成员变量的值.在set方法的内

【Objective-C基础知识-07】OC面向对象—封装

一.前言 在OC语言中,使用@interface和@implementation来处理类.   @interface就好像暴露在外面的时钟表面,像外界提供展示以及接口.@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来. 二.

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

黑马程序员--Objective-C之--OC面向对象的三大特征

OC面向对象的三大特征是封装.继承和多态. OC语言也支持面向对象的三大特征,OC提供了@private.@package.@protected.@public等访问控制符来实现封装 OC也允许子类来继承父类,并且支持多态. 一.封装 封装指的是將对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法对内部信息的操作和访问. OC的封装特性需要通过使用访问控制符来实现. (一).访问控制符 1.@private:当前类访问权限.如果类的成员变量使用@priva

OC面向对象的三大特征

OC面向对象的三大特征 1.OC面向对象的三大特封装 1)封装:完整的说是成员变量的封装. 2)在成语方法里面的成员变量最好不要使用@public这样会直接暴露在外面被别人随随便便修改,封装的方法还可以达到过滤无效数据的作用. 3)对成员变量只读(readonly):只允许外界访问我的no,不允许外界修改我,只需要提供get方法. 4)对成员变量只写:不允许外界访问我的no,只允许外界修改我,只需要提供set方法. set 方法的注意点: 作用: 提供一个方法给外界设置成员变量值,可以在方法里面

python学习 面向对象封装

from collectoins import namedtuplePoint=namedtuple('point',['x','y'])t1=Point(1,2)print(t1.x)print(t1.y)没有方法的类属性不会发生变化    定义简单 不能改变面向对象封装私有属性!!!私有方法!!!用装饰器描述的几个方法@property !!!@classmethod!!@staticmethod! 封装:class Teacher:     def __init__(self,name,p

面向对象 封装 、继承

构造函数: 构造函数 - 创建一个类的函数 每一个类都有构造函数,访问修饰符必须是public的,并且不需要写任何返回值,方法名与类名一致 自己写的类 - 用户自定义类型如果要使用自定义类型产生出来的  对象  必须有一个实例化的过程 实例化格式:类型名  ss = new 构造函数(); 访问修饰符 -  4个 public - 公共的,任何地方都可以访问,但是需要引用 命名空间 private - 私有的,类的内部才可以访问 internal - 内部的,默认的,程序集中可以访问,程序集就是

转:OC面向对象—多态

OC面向对象—多态 一.基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态. 在使用多态是,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指向子类对象. Animal类的声明 Animal类的实现 Dog类继承自Animal类 Dog类的实现 测试程序: 二.使用注意 代码分析: Dog *d=[[Animal  alloc] init];   动物是一条狗?语义正确吗? NSString *str=[Dog  new];     狗是一个字符串?

OC面向对象-多态

OC面向对象-多态 一.基本概念 1>多态在代码中的体现,即为多种形态,没有继承就没有多态 2>在使用多态时,会进行动态检测,以调用真实的对象方法 3>多态在代码中的体现即父类指针指向子类对象 Animal类的声明 #import <Foundation/Foundation> //声明一个Animal类,该类继承自NSObject @interface Animal : NSObject //在Animal类中声明一个eat的对象方法 -(void) eat; @end A