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

© LYG 初级黑马   /  2014-4-5 14:45  /  1450 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想问,在学习面向对象中:继承、覆盖、抽象、接口中,哪些是必须要复写父类的方法的?

12 个回复

倒序浏览
1.父类或接口中有抽象方法,在继承或实现时要复写父类的全部抽象方法。
回复 使用道具 举报
抽象 和接口必须要复写
回复 使用道具 举报
本帖最后由 zhangbingyuan 于 2014-4-5 15:07 编辑

继承:是类继承类,继承父类的话,父类中如果有抽象方法,那么就要实现其所有抽象方法(如果一个类中有抽象方法,那么该类也一定是抽象类),才能建立子类的对象。
覆盖:覆盖是进行继承时,如果要改写或增强父类同名方法的话,就要用到覆盖,即返回值、方法名、参数列表都得相同,只是内部的覆盖代码不同而已。这样,如果调用子类对象中的父类方法,就会调用子类中覆盖了父类方法的那个方法。
抽象:楼主这里的意思是不是抽象类? 抽象类的话需要被子类继承,并实现其全部抽象方法才能建立子类对象。一旦子类没有全部实现父类中的抽象方法,那么该子类也是抽象类。
接口:其实就是个抽象类,只不过,在接口中定义的方法默认都是抽象方法,定义时不需要像抽象类那样加上abstract修饰符,系统会默认自动加上。当然,如果有子类要继承接口的话,要实现接口中全部的抽象方法。

回复 使用道具 举报
╰青青子佩ˊゝ 发表于 2014-4-5 14:54
1.父类或接口中有抽象方法,在继承或实现时要复写父类的全部抽象方法。

嗯嗯,谢谢大家,我也看到了。:loveliness:
回复 使用道具 举报
杨殿生 发表于 2014-4-5 14:59
抽象 和接口必须要复写

谢谢,看来我还需要继续努力
回复 使用道具 举报
LYG 初级黑马 2014-4-5 15:51:25
7#
zhangbingyuan 发表于 2014-4-5 15:06
继承:是类继承类,继承父类的话,父类中如果有抽象方法,那么就要实现其所有抽象方法(如果一个类中有抽象 ...

抽象类中,被子类继承,要实现父类中全部抽象方法,那么其它方法不用复写,是吗?
回复 使用道具 举报
LYG 初级黑马 2014-4-5 15:53:04
8#
各位,可以留下QQ吗?学习上一起交流交流,有机会我们黑马见。
回复 使用道具 举报
当一个类中有抽象方法,这个类也必须要做成抽象的类,这个类不能直接创建实例对象。但是可以创建这个类的子类的实例,在创建子类实例的时候就要覆盖抽象类中的抽象方法。还有继承,中也可以覆盖的。比如,多线程的Thread这个类,里面的run方法默认是找Runnable对象。调用Runnable对象的run方法。所以我们直接new Thread对象是没有意义的。我们继承这个类。覆盖了Thread的run方法。我们创建的线程就可以执行我们定义的任务了。
接口也是不可以直接new的。我们可以创建接口的实现类,创建的时候也是需要实现接口中未实现的方法的。当然我们也可以使用空实现。 空实现在安卓里面也是用的相当多的。  
回复 使用道具 举报
LYG 初级黑马 2014-4-5 18:33:25
10#
syusikoku 发表于 2014-4-5 17:38
当一个类中有抽象方法,这个类也必须要做成抽象的类,这个类不能直接创建实例对象。但是可以创建这个类的子 ...

谢谢大神指导
回复 使用道具 举报
LYG 发表于 2014-4-5 15:51
抽象类中,被子类继承,要实现父类中全部抽象方法,那么其它方法不用复写,是吗? ...

其他方法可复写,也可不复写的。比如模板模式就是这样。将确定的方法的代码隐藏起来,将不确定的部分作为抽象方法暴露出去。这样当子类继承了父类,实现了父类暴露出来的不确定的方法后,就可以建立对象实例了。
回复 使用道具 举报
不客气。我的qq是2475725157,以后可以多交流交流
回复 使用道具 举报
LYG 初级黑马 2014-4-5 18:43:59
13#
syusikoku 发表于 2014-4-5 18:41
不客气。我的qq是2475725157,以后可以多交流交流

嗯嗯,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马