A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 15342193033 中级黑马   /  2014-12-28 09:37  /  949 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想问一下,A继承B的话,B里边所有的属性和方法A都可以直接用吗?用的时候不需要再声明了吧?那要是不想用B里边的值还可

以对他进行修改吗?修改后影响B里边的值吗?
比如:
@interface Animal :NSObject
{
        int _age;
}
-(void)setAge:(int)age;
-(int)age;

@end

@implementation Animal
//方法的实现

-(void)setAge:(int)age
{
        _age = age;
}
-(int)age
{
        return age;
}
@end


@interface Dog :Animal
@end

@implementation Dog
@end

比如Animal里有_age,我要是想在main函数里直接让Dog访问它没事吧?

int main()
{
        Dog * d = [Dog new];

        Animal * a = [Animal new];
        [d setAge:10];
        NSLog(@"age=%d",[d age]);
        NSLog(@"age=%d",[a age]);

}
这样输出来的值一样吗?



2 个回复

倒序浏览
输出来的值是一样的.面向对象的概念是,对事物进行分类,分类的基础是抽象,将相同的属性和方法进行抽象形成一个超类,当派生类继承超类时,派生类也继承了超类中的属性和方法.
回复 使用道具 举报
肯定不一样,第一个是10,第二个为0.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马