类的单继承和多实现的原因

Java语言设计中,一个类只能单继承但可以多实现接口。类的单继承避免了方法调用的冲突,而接口的多实现允许类适应多种角色。接口中的方法不具体,需在实现类中重写,因此不会产生调用冲突。

接口的出现和使用更加体现了Java语言的面向对象特征,它不同于抽象类

一个类只能继承一个父类,但却可以实现多个接口,为什么会是这样?

现在我们假设一个类可以继承多个多个类,代码如下:

//父类1

public class Father1

{

public void show()

{

System.out.println("父类1中的show方法");

}

}

//父类2

public class Father1

{

public void show()

{

System.out.println("父类2中的show方法");

}

}

现在我们定义一个子类,并同时继承以上两个父类

class Son extends Father1,Father2

{

}

在程序的main方法中我们实例化一个Son对象,并调用Son对象父类的show()方法

public static void main(String[] args)

{

Son son=new Son();

son.show();

}

接下来问题就会出现了,son.show()究竟是哪个父类的方法??

这就在方法调用上产生了矛盾,Java为了屏蔽到这个问题,就自然定义了类的单继承规则。

那么,为什么类可以多实现呢?

同样,我们仿照上面的例子重新用接口实现,代码如下:

interface Father1

{

void show();

}

interface Father2

{

void show();

}

在定义一个子类同时实现两个接口

class son implements Father1,Father2

{

void show()

{

........

}

}

这时候,在main方法中实例化Son对象并调用show()方法:

public static void main(String[] args)

{

Son son=new Son();

son.show();

}

这时候的show方法是并不冲突的,虽然Father1和Father2接口都定义了这个方法,但是由于接口中的方法不具体,也就是没有方法体

所以接口中方法的使用需要在实现了该接口的子类中重写才能实现该方法

所以此时son.show()方法实际是使用了重写后的Son类中的方法,并没有产生方法调用的冲突。



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值