黑马程序员技术交流社区
标题:
为什么接口的子类必须实现接口中的所有方法?
[打印本页]
作者:
张智文
时间:
2013-8-6 16:46
标题:
为什么接口的子类必须实现接口中的所有方法?
本帖最后由 杨兴庭 于 2013-8-7 18:02 编辑
为什么接口的子类必须实现接口中的所有方法? 如果一个类实现接口没有实现其中的全部方法 那么这个类是抽象类 为什么要全部实现其中的方法。
作者:
草帽
时间:
2013-8-6 16:50
实现借口的类是要覆写接口中的抽象方法的,非抽象方法不必,不过一般都会是抽象方法的,在抽象类中些非抽象方法也没什么意义,不重写的话也可以用已实现类的。
含有抽象方法的类必顶是抽象类,一个类实现接口没有实现其中的全部方法那么这个类也还是抽象类。
作者:
夜空闪亮
时间:
2013-8-6 23:32
接口的子类可以不必完全实现接口中的抽象方法,此时这个子类是抽象类,下面这段代码就说明接口的子类不全部实现接口中的方法是可以的:
interface Person
{
void walk();
void run();
}
abstract class Student implements Person //Student类仅实现了Person接口中的walk方法,所以该类是抽象的
{
public void walk()
{
System.out.println("Student walk");
}
}
class BaseStudent extends Student //BaseStudent类继承了抽象类 Student,并重写了Student类由Person接口继承而来但没有实现的run方法
{
public void run()
{
System.out.println("BaseStudent run");
}
}
class TestInterface
{
public static void main(String[] args)
{
BaseStudent s = new BaseStudent(); //建立子类BaseStudent对象,调用已实现的方法
s.walk();
s.run();
}
}
复制代码
由此可以得出以下结论:
有的时候需要将接口和抽象类配合起来使用,这样可以为开发者提供相当的便利性,开发者觉得哪个方便就选用哪个。这样的抽象类称为便利类。此时,便利类并不需要实现接口的所有方法,可以留给继承它的子类去实现它们。
这么做并非是没有意义的,当你自己写的类想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象类先实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到你的目的了,如果你直接用类实现接口,那么所有方法都是必须实现的。
程序运行结果如图所示:
3.png
(1.26 MB, 下载次数: 80)
下载附件
2013-8-6 23:32 上传
作者:
逆袭的风
时间:
2013-8-6 23:48
抽象类可以不实现接口的方法,但该类必须声明为抽象类,让他的子类来实现. 如果他的子类还是抽象类那就再由子类的子类去实现,直到继承该类的类不是抽象类为止
interface A
{
void eat();
void sleep();
void play();
}
abstract class B implements A
{
public void eat()
{
System.out.println("吃点好的");
}
}
class C extends B
{
}
class Interface
{
public static void main(String[] args)
{
C c=new C();
c.eat();
}
}
复制代码
其中B实现A(未完全实现),C继承B,则编译报错为:
Unnamed.png
(40.63 KB, 下载次数: 93)
下载附件
2013-8-6 23:48 上传
作者:
黑马王晓明
时间:
2013-8-6 23:52
抽象类需要子类继承后,覆盖全部抽象方法,建立子类对象
接口,需要子类实现,覆盖全部抽象方法,建立子类对象
抽象类中,有普通方法,子类继承后直接使用
接口中,没有普通方法,全部是抽象的方法,子类必须全部覆盖
抽象类中有构造方法,可以给体系中的子类实现成员变量的赋值
接口中定义的都是全局常量,直接调用使用
抽象类是这个继承体系的最共性内容
接口是这个体系以外的扩展内同
一个类只能继承一个类,有局限性
接口的多实现,避免了单继承的局限性
作者:
lijia113
时间:
2013-8-7 10:35
接口本身是一个抽象类,它里面的方法都是抽象的。如果它的子类没有全部实现它的方法,那么它的子类也就是抽象类,我们就不能去调用这个子类,不能够去实现这个子类。所以,如果想要得到接口的方法,就必须实现接口的全部方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2