日期:2014-05-20  浏览次数:20806 次

抽象类的方法必须被子类继承吗

求解?
Java

------解决方案--------------------
不是必须继承,而是必须实现。
最后一个abstract方法必须被Fruit的子类实现
------解决方案--------------------
子类会自动集成这四个方法,但是前面三个已经实现过的方法,子类可以不需要再实现了,如果子类一定要再次实现的话就叫做覆盖了。但是第四个抽象方法因为父类没有实现,所以子类必须实现。
------解决方案--------------------
这是一个public抽象类,所有非private的方法都将被子类继承
子类如果想成为非抽象类,则必须重写实现父类的抽象方法
------解决方案--------------------
子类会继承这四个方法,但如果子类不是抽象类,则子类必须实现testD(),楼主别忘了结贴
------解决方案--------------------
1、从定义上讲,用abstract关键字来修饰一个类时,这个类叫做抽象类,方法亦然
2、含有抽象方法的类,必须被声明为抽象类。抽象类中不一定具有抽象方法
3、抽象类中可以定义有具体实现的方法
4、抽象类不能被实例化 抽象方法只需声明 不必实现
5、子类继承父类的过程中,如果父类为抽象类,那么子类必须实现父类的抽象方法,否则子类必须声明为抽象类

   综上:抽象类是用来干什么的,就是用来继承,方法没有实现又不能实例化 一个残缺的类 留着它干什么 就像娶了老婆 难不成 还能不用不成 当然抽象类也是我们的程序层次化结构更加清晰
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。

private方法啊!版主也会犯这种错


好吧。其实这些方法也是存在的,只是受制于访问限制,无法直接访问。

这些方法是不存在的,不然这个怎么解释?

class A{
private void x() {}
}
class B extends A{
private int x() {
return 0;
}
}

这没什么好争的。从实现的角度,当然基类的方法存在。从语言的角度来说,你可以视作它不存在。

JLS7 Page158
A private class member or constructor is accessible only within the body of the top level
class (§7.6) that encloses the declaration of the member or constructor. It is not inherited
by subclasses.

是啊,你看不懂我说的意思么