Objective-C 类和对象

类定义

oc 中定义一个类会产生两个文件 .h 和 .m

  • .h 文件放类的声明,包括成员变量、属性和方法声明(.h文件不参与编译过程);关键字 @interface 声明一个类,以 @end 结束。
  • .m 文件放属性、方法的具体实现,关键字 @implementation 实现某个类,以@end 结尾

Person.h

#import 
@interface Person : NSObject
@end

Person.m

#import "Person.h"
@implementation Person
@end

由于.m中使用了Person类,所有需要导入声明文件 "Person.h"

java 中默认所有类继承自Object

class Person {
    
}

方法和属性

Person.h

#import 
@interface Person : NSObject
   // 对象是指针类型 带 * 号
   NSString *name;
   // 实例方法
   -(void) setName:(NSString *) name;
   // 静态方法
   +(void) show();

@end

Person.m

#import "Person.h"
@implementation Person
-(void) setName:(NSString *) name {
    self.name = name;
}

+(void)show() {
    NSLog(@"hehe");
}
@end

Java

class Person {
    //声明一个属性
    String name;
    // 实例方法
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }

    // 静态方法,直接 Person.show(); 调用
    public static void show() {
    
    }

}

self 关键字

表示当前对象或者类本身
Java中用this

构造方法

-(id) initWithName:(NSString *) name {
    if (self = [super init]) {
        self.name = name;
    }
    return self;
}

java

//默认实现
public Person() {
}

public Person(String name) {
    this.name = name;
}

//oc 类实例化需要先申请内存
Person *p = [[Person alloc]initWithName:@"lihua"];

description 方法

打印对象时,输出具体信息,(打印地址没什么用)

-(NSString *)description{
    return [NSString stringWithFormat:@"{name:%@}",self.name];
}

java

@Override
public String toString() {
    return "Person [name=" + name + "]";
}

继承

oc

@interface Person : NSObject
@end

java

class Son extends Person

你可能感兴趣的:(Objective-C 类和对象)