IT菜鸟到大牛 2015-07-31 09:46 采纳率: 0%
浏览 2693

oc 类的继承的实质,以及是怎样调用方法 和函数的

父类里声明的属性,会生成默认生成一个私有的成员变量.即不能被子类访问,那么子类通过继承得到了父类的属性,只能通过setter 和 getter 方法区访问父类的私有变量,那么这个私有变量不属于子类,那么在实例化这个子类的时候就没有这个私有变量,那么通过继承过来的setter 和getter方法访问的是什么,私有变量根本就没有生成啊! 同理在使用{}声明的私有变量同样可以在提供外部接口让外部访问,但是当子类继承后也可以通过生成实例对象,调用继承过来的借口,区给父类赋值,但是父类的私有变量没有被继承,内存之中也没有着个变量,那么子类通过借口访问的是什么?
由此我想搞不懂,,继承到底继承的是什么? 继承的时候使用 #import 引入了父类的头文件,那么子类是把父类的.h 文件之中的东西拷贝到自己的.h文件吗.还是怎么样.那么.m里面的东西呢?(例如.m 里面如果有延展生成的私有变量的话, 子类也是可以继承过来的接口去访问.m里面的私有变量的)
一个类生成实例化对象的话,可以通过自己.h里面的接口,(方法名)去访问.m里面找到对应的方法的实现,执行相应的操作.但是当一个对象实例话的时候在内存空间之中开辟了一块内存空间,系统根据(.h 里面声明的成员变量 以及 .m 的里面的延展属性)将其存储起来,这块内存空间会存储方法的信息吗?(即使方法的实现会存储在代码区).那么怎么知道一个类到底占用多多少内存空间呢? C语言有一个 sizeof 可以检测 OC语言呢?
当实例化一个对象之后,从内存的角度这个对象是没有方法的代码的,他是怎么找到这个代码的实现呢?方法的实现在代码区,就算找到了,这些代码又有可能去操作类的实例成员,但是,这些实例成员又存放在堆区之中,代码区的东西又是怎么去操纵堆区的内容
所以说程序是怎么加载类的这两个文件 .h 与.m 生成这个类对象,这两个文件之中的内容分别存放在哪里,程序在加载的时候有是怎么将这两者联系到一起呢?

当一个程序需要另一个文件的内容的时候,就需要引入这个文件 使用#import 但是当子类继承父类的时候,也需要引入父类的接口文件 .h 文件 怎么样理解#import ,是将相应的文件内容拷贝到子类的接口文件之中吗?这样就可以实现将父类的东西归为子类了吗,这就是继承的实质吗,那么父类的私有成员不是也被继承过来了吗?
方法和函数是怎么实现调用的,他们是通过接口或者方法名在程序运行的时候找到相应的代码?

属性的实质到底是什么,他和 在 花括号声明声明的成员变量有什么区别?
在声明属性和实现属性的时候 @property 和 @synthesize 具体都实现了什么功能.
因为在子类不能 直接使用 属性名的父类的属性默认生成的实例便量,但是在子类的方法之中使用@synthesize 可以对继承过来的属性进行声明一个属性名 名字的变量(这个变量到底是父类继承过来的还是在子类新生成的 父类默认生成的成员变量是私有的吗?是的话子类能继承吗,不能继承又怎样访问的.),但是此时通过属性生成的setter 和 getter 访问的变量到底是父类的还是子类新生成的.
当子类拥有这个属性的时候,他会不会也在子类之中生成一个默认的 _属性名的成员变量呢?
子类继承父类的属性,到底继承的是什么?
怎样同继承过来的借口访问父类的方法?在父类没有初始化的时候!!!
继承的实质到底是什么,是把父类头文件里面的内容
什么叫做oc之中没有绝对的私有函数的?
函数和方法到底是怎么调用的?

  • 写回答

1条回答

  • threenewbee 2015-07-31 13:34
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题