繼承及例項變數的作用域

2021-08-20 15:08:49 字數 2778 閱讀 4199

#import "person.h"

@inte***ce student : person

nsinteger _num;//學號

nsinteger _scoar;//分數

@property(nonatomic, assign)

nsinteger

num;

@property(nonatomic, assign)

nsinteger

score;

- (void)printstudent;

- (void)changeweight;

- (void)changeheight;

- (void)changeplace;

@end

@implementationstudent

- (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;

- (void)changeplace

_place

= @"shanghai";

@end

@inte***ceperson :

nsobject

nsstring *_name;

nsinteger _age;

@protected//受保護的例項變數,在當前類可以直接訪問,子類可以直接繼承,但是在類外不可以直接訪問,可以通過方法的呼叫間接的訪問

float _weight;

@private//表示的是私有的例項變數,在當前類內可以直接訪問,子類不能繼承,子類可以通過方法間接訪問,在類外不可以直接訪問

float _height;

@public//公共的例項變數,在當前類內可以直接訪問,子類可以繼承,在類外也是可以通過 -> 直接訪問

nsstring *_place;

@property(nonatomic, assign)floatheight;

@property(nonatomic, assign)floatweight;

@property(nonatomic, copy)

nsstring

*name;

@property(nonatomic, assign)

nsinteger

age;

//@property預設展開的例項變數是私有的

@property(nonatomic, copy)

nsstring

*firstname;

@end

#import "person.h"

@implementationperson

- (void)setheight:(float)height

_height = height;

- (float)height

return

_height;

@end

#import

#import "student.h"

//物件導向語言的特點:封裝、繼承、多型

//繼承:

//生活中例子:繼承遺產

//繼承也叫做派生,子類繼承父類,在父類的基礎上派生自己的例項變數及方法

//person類是student類的父類

//student類是person類的子類

//父類

//person       student

//superclass   subclass

//parentclass  childclass

//在oc中的寫法

//@inte***ce student : person

//@end

//子類繼承父類,子類繼承父類非私有的例項變數及非私有方法

//子類例項變數的構成 = 父類例項變數 + 子類自定義例項變數

//子類方法構成 = 父類非私有方法 + 子類自定義方法

int main(int argc, const

char * argv) {

@autoreleasepool{

student *stu = [[student

alloc] init];

stu.name = @"小飛";

stu.age = 12;

stu.num = 45;

stu.score = 99;

[stu printstudent];

//stu->_weight = 45.7;錯誤

stu.weight = 56.7;

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

//stu->_height = 100;錯誤

stu.height = 178;

nslog(@"height = %.2f", stu.height);

stu->_place = @"beijing";

nslog(@"place = %@", stu->_place);

return0;

作用域及變數

作用域 重點 什麼是作用域,就是乙個變數可以生效的範圍 變數不是在所有地方都可以使用的,而這個變數的使用範圍就是作用域 全域性作用域 全域性作用域是最大的作用域 在全域性作用域中定義的變數可以在任何地方使用 頁面開啟的時候,瀏覽器會自動給我們生成乙個全域性作用域 window 這個作用域會一直存在,...

類 作用域 共享變數 例項變數

類變數和例項變數在操作上的區別 被所有例項共享的變數 class sapm spam spam x sapm y sapm x.spam spam y.spam spam sapm.data 123 x.data,y.data 123 123 對例項的屬性進行賦值運算會在該例項內建立或修改變數名,而...

Js 變數及作用域

一 變數包含兩種不同資料型別的值 基本型別值 引用型別值 1 基本型別值 1.簡單的資料段,被儲存在棧記憶體中 2.按值訪問 3.不能給基本型別的值新增屬性 4.從乙個變數向另乙個變數複製值時,會建立這個值的副本,兩個變數不相互影響 2.引用型別值 1.值是儲存在記憶體中的物件,儲存在堆記憶體中 2...