黑马程序员技术交流社区
标题:
java多实现带来的安全隐患
[打印本页]
作者:
逸盏清茶
时间:
2013-5-15 00:00
标题:
java多实现带来的安全隐患
本帖最后由 逸盏清茶 于 2013-5-16 17:37 编辑
多继承容易带来安全隐患:当多个父类中定义了相同功能,功能内容不同时,子类对象不确定要运行哪一个
如果子类实现了多个接口,并且多个接口中定义了相同的功能,功能内容不同时,不也会出现安全隐患吗?
作者:
乎¤_¤乎
时间:
2013-5-15 00:10
既然是接口,那么都是抽象函数,没有功能内容,这时候子类只要实现其中的一个就可以了。
送你一道题
2013-05-15_001019.png
(142.12 KB, 下载次数: 0)
下载附件
2013-5-15 00:10 上传
作者:
HM刘博
时间:
2013-5-15 00:19
这个是不会的,因为接口中的方法都是抽象的,都没有方法体,只是方法声明相同。
例子:
interface Inter//定义一个接口
{
public abstract void show();//方法是抽象的
}
interface Inter2//定义第二个接口,两个方法都是抽象的
{
public abstract void method();
public abstract void show();
}
interface Inter3 extends Inter,Inter2//第三个接口继承了前两个接口
{
public abstract void function();
}
class Fu //默认有个extends Object
{
}
class Demo extends Fu implements Inter,Inter2//继承Fu类并实现了前两个接口
{
public void show()//复写show方法
{
System.out.println("demo show");
}
public void method()//复写method方法
{
System.out.println("demo method");
}
}
复制代码
作者:
逸盏清茶
时间:
2013-5-15 00:24
对啊,那多实现不是也出现了安全隐患。
作者:
逸盏清茶
时间:
2013-5-15 00:30
interface A
{
void show();
}
interface B
{
int show ();
}
class C implements A,implements B
{
public void show(){};
public int show (){};
}
C 对象在调用show()的时候会运行哪一个呢?
复制代码
作者:
xuemeng
时间:
2013-5-15 00:38
本帖最后由 xuemeng 于 2013-5-15 00:40 编辑
逸盏清茶 发表于 2013-5-15 00:30
你这就是一种错误的写法啊!!1 代码不能这样写的!!! 在我们使用接口的时候, 我们就要避免这种情况出现啊!!! 这个与接口可以多实现并不矛盾
作者:
杨修
时间:
2013-5-15 11:41
楼主,我曾经也和你有过相同的矛盾,有时候有些矛盾不是坏事,在你慢慢学习过程中,之前的一些问题都会慢慢的会被解决。
第一,Java不支持多继承,只支持单继承;
你上面说的继承(只有单继承)中如果出现多个相同的功能(如果这里不严格规定参数列表是否相同),但是功能内容不同,这时候,返回值一般类型是不同的,
还有就是后面的参数列表也是用来确定使用哪一个方法的依据。
第二,Java支持多实现,这在一定程度上弥补了java不支持多继承这一特性;
多实现中不管实现接口有多少个,统统都支持。每个接口里面的函数可以相同也可以不相同,
如果多个接口里面都出现了相同的函数,那么实现这一个函数的时候,就只要复写一个函数就行了。
interface A
{
void show();
int method();
}
interface B
{
void show ();
}
class C implements A,implements B
{
void show(){};
int method(){};
}
上面代码中,只实现了一个void show(){};方法。
作者:
王靖远
时间:
2013-5-15 15:06
因为接口中的方法都是抽象的。抽象的在实现时候必须要复写,复写后只有一种方法能保留。那么就不会出现安全隐患啦。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2