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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

calendar是个抽象类 按说应该创建一个子类对象来调用父类方法,但是这个getinstance方法返回的是一个calendar 类型的对象,到底是什么意思?抽象类如果都这样岂不都可以创建对象了?
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端

8 个回复

倒序浏览
抽象类和接口本来就是子类对象的引用啊,这就是多态啊,抽象类自己又不可以创建对象
O(∩_∩)O嗯!    getInstance()是静态的,类名直接调用啊,然后这个方法返回一个子类引用,就是向上转型C:\tools\2.png.C:\tools\1.png
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
zhy20160915 发表于 2016-11-1 00:31
抽象类和接口本来就是子类对象的引用啊,这就是多态啊,抽象类自己又不可以创建对象
O(∩_∩)O嗯!    getInst ...

所以这个方法相当于创建一个子类对象,但是返回的是个父类对象?
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
你只不过是用父类变量接收,其实它是一个calendar的子类对象。再好好屡屡吧
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
你创建的是子类对象,但是让他化妆成了父类,这样说不知道你能不能理解。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
w梧桐叶 发表于 2016-11-1 13:47
你创建的是子类对象,但是让他化妆成了父类,这样说不知道你能不能理解。
...

今天看了源码,懂了,底层返回了个格里高利日历类
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
2楼说的很妙
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马