美文网首页
Object C继承及实例变量的作用域

Object C继承及实例变量的作用域

作者: 奔跑的小小鱼 | 来源:发表于2017-04-04 16:04 被阅读35次

[main.m]

#import foundation/Foundation.h>

#import "Student.h"

//面向对象语言的特点:封装  继承 多态

//继承:也叫派生,子类继承父类,在交类的继承派生自己的实例变理及方法

//peson 类 student类:peson类是student的父类。student类是pdeson类的子类

//superClass父类的访问,subClass子类的访问

//parentClass父亲的访问,childClass 子类的访问

//OC的写法

//@interface Student:person  //student 类继承于person类

//@end

//子类继承父类,子类继承父类非私有的实例变量及非私有的方法

//子类实例变更构成=父类实例变量+子类自定义的实例变量

//子类方法构成=父类非私有方法+子类自定义的方法

int main(int argc,const char *argv[]){

@autorelesepool{

Student *stu=[[Student alloc]] init];

//继承父类的方法

stu.name=@"小飞";

stu.age=12;

//子类自定义的方法

stu.num=45;

stu.score=99;

[stu printStudent];

打印结果:name=小飞 age=12

                   num=45  score=99

}

//受保护的

//stu->_weight=45.7//不可以直接访问受保护的实例变量

//通过setter,getter方法访问受保护的实例变量

stu.weight=56.7;

NSLog(@"weight=%.2f",stu.weight);

打印结果:weight=56.7

//私有的

//stu->_height=100;//不可以直接访问私有的实例变量

sut.height=178;

NSLog(@"height=%.2f",stu.height);//类外需通过setter,getter方法间接访问

打印结果:height=178

//公共的

sut->_place=@"北京";

NSLog(@"place=%@",stu->_palce)

打印结果:pace=北京

}

return 0;

}


//创建一个person类

【person.h】

#import <foundation/Foundation.h>

@interface Person:NSObject

{

NSString *_name;

NSInteger _age;

//实例变量作用域

@protected //(缺省)受保护的实例变量,在当关类内可以直接访问,子类可以直接继承,在类外不可以直接访问,可以通过方法(setter,getter方法)的调用间接访问

float _weight;

@private //私有的实例变量,在当前类内可以直接访问,子类不能继承,子类可以通过方法间接访问,在类外不能直接访问。

float _height;

@public //公共的实例变量,在当前类内可以直接访问,子类可以直接继承,类外也可以直接访问,通过->(指针运算符)直接访问

NSString *_palce;

}

@property(nonatomic,assign)float weight;

@Property(nonatomic,assign)folat height;

@property (nonatomic,copy)NSString *name;

@property(nonatomic,assign)NSInteger age;

//默认展开的实例变理是私有变量,若放更改为受保护的在{}中定义即可

@proerty(nonatomic,copy)NSString *fristName;

@end


【person.m】

#import "person.h"

@implementation Person

//setter方法

-(void)setHeight:(float)height

{

_height = height;

}

//getter方法

-(float)height

{

return _height;

}

@end


【创建Student类,继承 Peson类】

【Student.h】

#import "person.h"

@interface Student:person

{

NSInteger _num ;//学号

NSInteger _score;//分数

}

@property (nonatmic,assign)NSInteger num;

@property (nonatmic,assign)NSInteger score;

//缺省的

-(void)print Student;

//受保护的

-(void)changeWeight;

//私有的

-(void)changeHeight;

//公共的

-(void)changPlace;

//未定义在实例变量{}中使用的property关键字

-(void)chantFirstName;

@end


【Student.m】

#import "Student.h"

@implementation Student

-(void)printStudent

{

//访问从父类继承的实例变量

NSLog(@"name=%@" age=%li,_name,_age);

//访问自定义的实例变量

NSLog(@num=%li score=%li",_num,_score);

}

//受保护的

-(void)changeWeight{

_weight=56.7;

}

//私有的

-(void)changeHeight{

{

//_height=45;//子类不能继承父类的私有实例变量

self.height=176;//通过调用setter方法,间接访问私有实例变量;

}

//公共的

-(void)chantPlace

{

_palce=@"上海";

}

//未定义实例变量,使用的是property关键字;

-(void)chantFirstName{

//_firstName=@"小飞"; 无法调用,因property关键字是将实例变量展开到.m文件

}

@end

相关文章

  • Object C继承及实例变量的作用域

    [main.m] #import foundation/Foundation.h> #import "Studen...

  • MRC下的内存管理

    一、名词分类 1 拥有者:(变量,实例,函数,变量的作用域) 2 被拥有者:(变量,实例,函数,变量的作用域) 3...

  • 笔记

    Object-C中static标示的是变量的作用域,表明其他类不能通过类名直接访问该变量,它的作用域只能是在声明它...

  • C - 作用域

    C - 作用域 一个 C 变量的作用域可以是: 块作用域 函数作用域 函数原型作用域 或 文件作用域 作用域描述程...

  • 2.1 实例变量修饰符

    本小节知识点: 【理解】实例变量的作用域 【掌握】变量修饰符在子类中的访问 【了解】实例变量作用域使用注意事项 1...

  • C语言之内存讲解

    1 内存讲解 1.1 作用域 C语言变量的作用域分为:代码块、函数、文件作用域: 1.1.1 局部变量 局部变量(...

  • Object-C 中变量的作用域

    iOS中,修饰变量的关键字有四个,分别是: 1 @public 被这个关键字修饰的变量是完全开放的,只要有这类的对...

  • Dart教程(三):类的定义和使用

    类 特点: 面向对象 mixin继承 所有的类都继承自object 一、类的实例变量(成员变量) 对象的成员包括:...

  • C - 链接属性

    C 变量有 3 种链接属性: 外部链接, 内部链接或无链接. 具有块作用域, 函数作用域或函数原型作用域的变量都是...

  • 2019-05-11(作用域)

    作用域: 作用域描述的程序中可以访问标识符的区域,在C语言变量的作用域可以是块作用域,函数作用域,函数原型的作用域...

网友评论

      本文标题:Object C继承及实例变量的作用域

      本文链接:https://www.haomeiwen.com/subject/awmaottx.html