黑马程序员技术交流社区
标题:
OC为什么最后没有输出
[打印本页]
作者:
LuciferTJD
时间:
2015-4-9 14:39
标题:
OC为什么最后没有输出
本帖最后由 汤靖咚 于 2015-4-9 21:28 编辑
求帮忙看看,这个最后应该输出的不是正在学习的是OC语言,为什么不是,结果提示没有书名,是哪个地方出错了呢?
#import <Foundation/Foundation.h>
// 人
@interface Person : NSObject
{
NSString *_name; // 姓名
int _age; // 年龄
}
// 姓名的setter和getter
- (void)setName:(NSString *)name;
- (NSString *)name;
// 年龄的setter和getter
- (void)setAge:(int)age;
- (int)age;
// 一种方法同时设置年龄和姓名
- (void)setName:(NSString *)name andAge:(int)age;
@end
@implementation Person
// 姓名的实现
- (void)setName:(NSString *)name
{
_name = name;
}
- (NSString *)name
{
return _name;
}
// 年龄的实现
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
// 同时设置姓名和年龄
- (void)setName:(NSString *)name andAge:(int)age
{
_name = name;
_age = age;
}
@end
// 书
@interface Book : NSObject
{
NSString *_nameOfBook; // 书名
NSString *_nameOfPublisher; // 出版社
Person *_author; // 作者
}
// 书名getter和setter
- (void)setNameOfBook:(NSString *)nameOfBook;
- (NSString *)nameOfBook;
// 出版社名称getter和setter
- (void)setNameOfPublisher:(NSString *)nameOfPublisher;
- (NSString *)nameOfPublisher;
// 作者getter和setter
- (void)setAuthor:(Person *)author;
- (Person *)author;
@end
@implementation Book
// 书名的实现
- (void)setNameOfBook:(NSString *)nameOfBook
{
_nameOfBook = nameOfBook;
}
- (NSString *)nameOfBook
{
return _nameOfBook;
}
// 出版社名称的实现
- (void)setNameOfPublisher:(NSString *)nameOfPublisher
{
_nameOfPublisher = nameOfPublisher;
}
- (NSString *)nameOfPublisher
{
return _nameOfPublisher;
}
// 作者的实现
- (void)setAuthor:(Person *)author
{
_author = author;
}
- (Person *)author
{
return _author;
}
@end
// 学生
@interface Student : Person
{
int _no;
Book *_book;
}
// 学号的getter和setter
- (void)setNo:(int)no;
- (int)no;
// 书的getter和setter
- (void)setBook:(Book *)book;
- (Book *)book;
// -study: 输出书名
- (void)study;
@end
@implementation Student
// 学号的实现
- (void)setNo:(int)no
{
_no = no;
}
- (int)no
{
return _no;
}
// 书的实现
- (void)setBook:(Book *)book
{
_book = book;
}
- (Book *)book
{
return _book;
}
// 学习
- (void)study
{
NSLog(@"正在学习的是%@", [_book nameOfBook]);
}
@end
int main()
{
// 创建学生对象
Student *stu = [Student new];
// 创建书对象
Book *b = [Book new];
// 调用书名setter方法,写入书名
[b setNameOfBook:@"OC语言"];
// 学生学习
[stu study];
return 0;
}
复制代码
继承输出.png
(5.06 KB, 下载次数: 47)
下载附件
2015-4-9 14:39 上传
作者:
LuciferTJD
时间:
2015-4-9 20:12
为什么没有人回答呢
作者:
仰望的繁华
时间:
2015-4-9 20:59
本帖最后由 仰望的繁华 于 2015-4-9 21:01 编辑
添加第八行即可;
int main()
{
// 创建学生对象
Student *stu = [Student new];
// 创建书对象
Book *b = [Book new];
// 你得将创建的书对象,设置给此学生。然后这个学生才拥有这本书,后面的方法调用学生读的书才有名字啊。
stu.book = b;
// 调用书名setter方法,写入书名
[b setNameOfBook:@"OC语言"];
// 学生学习
[stu study];
return 0;
}
复制代码
作者:
jonk
时间:
2015-4-9 21:17
就是那么的
作者:
LuciferTJD
时间:
2015-4-9 21:28
仰望的繁华 发表于 2015-4-9 20:59
添加第八行即可;
非常感谢,刚看一直不知道怎么回事...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2