黑马程序员技术交流社区

标题: 继承的性质有点模糊 [打印本页]

作者: 15342193033    时间: 2014-12-28 09:37
标题: 继承的性质有点模糊
我想问一下,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]);

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




作者: zhaozigeng    时间: 2014-12-28 10:27
输出来的值是一样的.面向对象的概念是,对事物进行分类,分类的基础是抽象,将相同的属性和方法进行抽象形成一个超类,当派生类继承超类时,派生类也继承了超类中的属性和方法.
作者: chasedream    时间: 2014-12-28 10:34
肯定不一样,第一个是10,第二个为0.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2