黑马程序员技术交流社区
标题:
关于函数复写与抽象方法的问题
[打印本页]
作者:
没壳的蜗牛
时间:
2014-5-22 12:27
标题:
关于函数复写与抽象方法的问题
本帖最后由 没壳的蜗牛 于 2014-5-23 21:04 编辑
class Fu
{
public void method()
{
System.out.println("fuMethod");
}
}
复制代码
不同的子类继承父类,在不同的子类中为了实现功能一样的方法method(),但是具体功能内容不一样,我们可以直接在不同子类中复写method方法即可。
class Z1 extend Fu
{
public void method()
{
System.out.println("Z1_Method");
}
}
复制代码
class Z2 extend Fu
{
public void method()
{
System.out.println("Z2_Method");
}
}
复制代码
为了实现上述功能,我可以将父类定义为抽象类,method()定义为抽象方法。
abstract class Fu
{
public abstract void method();
}
复制代码
然后在不同的子类中直接复写method()即可。
请问这两种方法个有什么好处,各有什么缺点。小白一个,希望大神留下代码。谢谢!
作者:
格子、
时间:
2014-5-22 12:59
抽象类的继承是必须复习的,而且是不可以创建对象的。其原因就是其中的抽象方法就是从子类中不断向上抽取出来的,也就是说所有子类都有的方法,但是可能方法的功能不一样,所一就只声明方法不声明方法的主体。
抽象类一般都是定义的抽象方法。
想要成为抽象的类的子类就必须复写其中父类所有的抽象方法,不然你还是个抽象类,就像你要想当我儿子就必须跟我姓一样,不跟我就不承认!!!
普通的类的继承,就是跟父类关系,其中的方法我可以直接用,如果功能一样但是内容不一样的话,直接复写掉就行,在方法执行的时候会直接优先选择子类的执行,也可以用super指定执行父类的方法,其余的直接用怎么万都行,没什么限制条件,只要你继承了我就能拥有我的一切!!!
我感觉啊,这要主要是明白其特点,在应用的时候注意就好了。
代码体现的话,最多就是一个抽象类,你没复写办法就不让new对象,而普通的继承没关系,没太大的意思,忘能帮到楼主!!!
作者:
MiaoPF
时间:
2014-5-22 13:00
理解不了,我觉得抽象类,抽象方法,使得代码更复杂了!难道真正的好处体现在设计阶段?同求大神解答!
作者:
寻找人生目标
时间:
2014-5-22 13:13
同求
作者:
木华
时间:
2014-5-22 14:19
我说说自己的一点自己的理解吧,抽象类就是因为他太抽象了,通过父类的功能函数我们是不知道子类会具体如何做一件事情的,就比如Animal类,它下面可以有子类猫,狗,羊,他们都有吃的功能吧,但是他们吃的都不一样,猫吃鱼,狗吃骨头,羊吃草,所以此时父类就可以定义为抽象类,如果为Cat类它里面还有子类白猫,黑猫,花猫,他们都是吃鱼,他们的共同点向上抽取不是很抽象,此时就可以定义为一般类。
作者:
never615
时间:
2014-5-22 16:18
本帖最后由 never615 于 2014-5-22 16:20 编辑
1.java是面向对象的。现实中很多具体的实物,全部具体实现不可能,但抽象出一些共同的方法还是很容易实现的
2.抽象出这些方法后,你创建具体对象的时候就方便了,继承了抽象类,你就要实现里面的抽象方法,系统也会提示你
所以这样会让你写代码轻松点,条理点
以前开发JAVA这个语言的时候,他们也想啊,好多具体的实现,但他们有共同的方法,他写个抽象类,继承实现,这样还有好多子类,子类的子类写起来就会轻松许多
作者:
code2014
时间:
2014-5-22 17:47
父类若是抽象类就不能生成实例对象,并且子类必须实现父类的抽象方法
父类若是普通类,则可以生成实例对象,子类对父类的方法可以重写,也可以不重写
作者:
13556793092
时间:
2014-5-22 18:00
个人觉得还是应用的随机应变问题,抽象类的出现增加了程序的扩展性。个人在mvc模式中感觉比较有用。
有些事情只能自己慢慢体会,至于你说的有什么不同。
当父类的方法为抽象时,子类必须复写该抽象方法,
当父类的方法是普通方法时,子类可以复学,也可以直接继承过来。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2