封装和继承

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------






封装

1). 属性不能给外界访问,因为属性⼀一旦被外界访问,那么外界就可以任意的给属 性赋值。只要数据类型⼀一致,都是可以的。

所以,修饰符@public就不应该存在了。 

2). 专⻔门写1个⽅方法,为属性赋值。

  在⽅方法的内部就可以判断赋值的数据是否符合逻辑。

如果符合就将其赋值给属性,否则就坐默认处理。

 3). 如果在外部想要获得属性的值

那么就再写1个⽅方法专⻔门⽤用来返回属性的值。 


OC类的setter和getter的规范

1 > 属性⼀一定要保护起来,不要被外界直接访问。

2 > setter的规范:⽤用来为属性设置值,并且可以做逻辑判断 

1.这⼀一定是1个对象⽅方法,因为setter去对对象的属性赋值。

2.这个⽅方法是专⻔门为对象的属性赋值的,所以没有返回值。

3.⽅方法名,必须以 set 开头,后⾯面跟属性名(去掉下划线),并且属性名的⾸首 字⺟母⼤大写。
4.这个⽅方法⼀一定是有参数的。并且参数的类型和属性的类型⼀一致。 参数的名称和属性名⼀一致,只是去掉下划线。
5.在⽅方法的内部,判断传⼊入的数据是否符合逻辑验证, 如果符合就将传⼊入的数据赋值给属性,否则就做默认处理。

6.在外部如果要对这个属性赋值,是⽆无法直接访问属性赋值的。 那么这个时候就必须调⽤用set⽅方法来赋值 ⽽而set⽅方法做了过滤。

3 > getter的规范:得到属性的值
—>这⼀一定是1个对象⽅方法,因为get是要娶返回对象的属性的值。
—>⼀一定有返回值,因为这个⽅方法要得到属性的值 返回值的类型⼀一定是和属性的类型相同的。
—>⽅方法名的规范,属性名去掉下划线。 
—>⼀一定没有参数,因为这个⽅方法是直接返回属性的值。 
—>⽅方法内部,直接返回属性的值 
—>这个时候外部如果想要得到属性的值,不能直接访问属性了。
⽽而是调⽤用getter⽅方法来得到属性的值。


set⽅方法

1> 作⽤用: 

1)、提供⼀一个⽅方法给外界设置成员变量值.

2)、可以在⽅方法⾥里⾯面对参数进⾏行相应过滤. 
2 > 命名规范
1)、⽅方法名必须以set开头。 
2)、set后⾯面跟成员变量名称,成员变量的⾸首字⺟母必须⼤大写。 
3)、返回值⼀一定是void。 
4)、⼀一定要接收⼀一个参数,⽽而且参数类型跟成员变量类型⼀一致。 
5)、形参的名称不能跟成员变量名⼀一样。


get⽅方法

 1 > 作⽤用:返回对象内部的成员变量

 2 > 命名规范:

1)、肯定有返回值,返回值类型肯定与成员变量类型⼀一致 

2)、⽅方法名跟成员变量名⼀一样

3)、不需要接收任何参数


成员变量的命名规范 
   都以下划线开头“_”,如 int _age;


继承的语法
@interface ⼉儿⼦子类名 : ⽗父亲类名 {
属性;
}
声明⽅方法;
@end
@implementation ⼉儿⼦子类名 实现⽅方法
@end
@interface A:B @end


基类和派⽣生类之间的关系 
A类是B类的⼦子类,B类是A类的⽗父类
A类从B类继承,B类派⽣生出A类。
3.1、继承的⺫⽬目的 ⼉儿⼦子类想拥有⽗父亲类中的成员,但是不想⾃自⼰己去定义,⽽而是想凭空拥有。
3.2、继承的效果: ⼦子类从⽗父类继承,就代表⼦子类⽆无条件拥有⽗父类的全部成员。


访问变量修饰符
@public 公共变量:在任何位置都可以访问。
@private 私有变量:只有在类当中的⽅方法内可以访问。 @protect 半私有变量:可以在⾃自⼰己和⼦子类当中访问。 @package 半公开变量:在相同框架内可以访问。


OC中的私有⽅方法 
1 > ⽅方法写在实现⽂文件当中
2 > ⽗父类私有的⽅方法在⼦子类中定义同名⽅方法不叫做重写. 6、OC中的私有属性
1 > 属性写在实现⽂文件当中.
2 > 可被⼦子类继承,但是不能被⼦子类使⽤用。 

3 > ⼦子类可对⽗父类私有属性进⾏行重复定义。


#import <Foundation/Foundation.h>


@interface Person : NSObject

{

    NSString *_name;

}

-(void)setName:(NSString *)name;

-(NSString *)name;

-(void)dazhaohu;

@end

#import "Person.h"


@implementation Person

-(void)setName:(NSString *)name{

    _name=name;

}

-(NSString *)name{

    return _name;

}

-(void)dazhaohu{

    NSLog(@"hello");

}

@end

#import "Person.h"


@interface Chinese : Person

-(void)dazhaohu;

@end

@implementation Chinese

-(void)dazhaohu{

    NSLog(@"吃了吗?");

}

#import "Person.h"


@interface japan : Person

-(void)dazhaohu;

-(NSString *)description;

@end




-(void)dazhaohu{

    NSLog(@"aligadou");

}

-(NSString *)description{

   return @"zhansan";


}

@interface Golipang : Person

-(void)dazhaohu;

@end



#import "Golipang.h"


@implementation Golipang

-(void)dazhaohu{

    NSLog(@"思密达");

}

@end


结果



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值