黑马程序员技术交流社区

标题: 接口多实现中的public....... [打印本页]

作者: 张宝    时间: 2013-3-16 23:59
标题: 接口多实现中的public.......
interface A
{
void show();
}
interface B
{
void show();
}
class C implements A,B
{
public void show(){}
}

public void show(){}   这句中的public必须有吗?public 去掉是否可以?为什么?

作者: 黑马-李嘉欣    时间: 2013-3-17 00:07
像这种问题最好是自己运行一下:
public当然不能去掉,类实现接口中方法,权限需要高于接口中的,否则会编译失败,见图:希望对你有帮助~

11.png (3.14 KB, 下载次数: 9)

11.png

作者: 刘凯    时间: 2013-3-17 00:13
必须不能够啊  子类复写父类的方法 子类复写的方法权限只能大于等于父类中的该方法   接口中的方法都是默认public的  子类不写public  那么子类权限为default  小于public
所以不可以去掉
作者: 黑马17期-闫东东    时间: 2013-3-17 00:14
不能,因为接口中默认的是public权限,实现接口中的方法不能使用更严格的权限修饰符,不写就是默认的修饰符。编译会失败的
作者: 张宝    时间: 2013-3-17 00:29
黑马17期-闫东东 发表于 2013-3-17 00:14
不能,因为接口中默认的是public权限,实现接口中的方法不能使用更严格的权限修饰符,不写就是默认的修饰符 ...

如果不写,那里默认的修饰符是什么呢?
作者: 黑马-王鹏    时间: 2013-3-17 00:32
接口中的成员都是public的,如果去掉,编译将不会通过,因为接口相当于抽象类,而抽象类的继承必须要复写父类中所有方法,而复写的前提是子类权限必须要大于等于父类,
如果去掉了public,那么子类权限就可能小于父类
作者: 张宝    时间: 2013-3-17 00:46
黑马-王鹏 发表于 2013-3-17 00:32
接口中的成员都是public的,如果去掉,编译将不会通过,因为接口相当于抽象类,而抽象类的继承必须要复写父 ...

啊!原来这样,谢了....
作者: 聂斌    时间: 2013-3-17 01:49
接口中的成员都有固定修饰符
        常量:public static final,,如果这里少写了final,只要是interface修饰 类,那么它会自动帮你加上final,少写static final,也会帮你加,少写public static final也会帮你加
        方法:public abstract   这里不写public abstract,他也会帮你加,,因为你只要写了interface,他里面的成员都有固定修饰符,你少写哪个,就给你补哪个

注意;接口里面的成员都是public的所以你想覆盖接口里面的方法那么子类的方法也是public的,,权限得一样大,不能变





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2