08.实例方法和类方法的区别与及工厂方法-创新互联

实例方法和类方法的区别
区别1:
      实例方法: 实例方法属于实例,也就是说属于对象,通过实例调用的方法就是实例方法,实例方法只能通过实例(对象)调用
      声明方式: -(返回值)方法名:参数 强调的是 “-”

      类方法:      类方法属于类的,调用的时候,只能使用类名调用
      声明方式:+(返回值)方法名:参数  强调的是 “+”

区别2:
       实例方法: 实例方法在运行时只关注实例的信息(实例变量),实例方法中可以访问或修改实例变量

      类方法:   类方法在运行时只关注类中的信息,类方法中不可访问或修改实例变量

区别3:
      实例方法: 实例方法中可以访问类方法
      类方法: 类方法中不能访问实例方法

工厂方法
      工厂方法是类方法
      工厂创建对象用
      工厂方法 返回值是 当前类型, 方法名去掉前缀首字母小写如 TRPoint类的工厂方法名是 point

创新互联专注于泉港网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供泉港营销型网站建设,泉港网站制作、泉港网页设计、泉港网站官网定制、微信小程序定制开发服务,打造泉港网络公司原创品牌,更为您提供泉港网站排名全网营销落地服务。

下面来上代码:

main.m文件的代码

#import
#import "MyPoint.h"

int main(int argc, const char * argv[]) {
   @autoreleasepool {
       MyPoint *point = [[MyPoint alloc]init];

       //实例方法属于实例,用实例调用
       [point show];

       //类方法属于类,用类名调用
       //[point2 show2];error

        [MyPoint show2];//right

       MyPoint *point2 = [ MyPoint createPoint];
       [point2 show];//x = 10,y = 20
   }
   return 0;
}

Mypoint.h文件的代码

#import

@interface MyPoint : NSObject
@property int x;
@property int y;
-(id)init;
//With W一定要大写
//-(id)initWithX:(int)x andY:(int)y;
-(void)show;//声明实例方法
+(void)show2;//声明类方法
+(void)show3;//声明类方法
+(id)createPoint;//创建点的类方法
@end

MyPoint.m文件的代码

#import "MyPoint.h"

@implementation MyPoint
-(id)init
{
   self = [super init];
   if (self) {
       self.x = 100;//_x = 100;
       self.y = 200;
   }

   return self;
}

-(void)show
{
   //实例方法可以修改实例变量,实例方法中self表示当前对象,通过对象可以找到实例变量
   NSLog(@"x = %d,y = %d",_x,_y);

   //实例方法中可以调用类方法
   //[MyPoint show2];

}

+(void)show2
{
   //类方法中self不再是对象,那么类方法中就没有当前对象的概念了,找不到对象就更加找不到对象中的实例变量了
   //类方法中不可以访问实例变量
  // NSLog(@"x = %d,y = %d",_x,_y);
   //类方法中self标书当前类
   NSLog(@"类方法被调用");

   //类方法中不可以调用实例方法

   //[self show];error

   //类方法中可以调用类方法
   [self show3];
}

+(void)show3
{
   NSLog(@"我也是一个类方法");
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页题目:08.实例方法和类方法的区别与及工厂方法-创新互联
网站URL:http://cdiso.cn/article/dsojee.html

其他资讯