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 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程