A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张宝 中级黑马   /  2013-3-16 23:59  /  1740 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

interface A
{
void show();
}
interface B
{
void show();
}
class C implements A,B
{
public void show(){}
}

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

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

7 个回复

倒序浏览
像这种问题最好是自己运行一下:
public当然不能去掉,类实现接口中方法,权限需要高于接口中的,否则会编译失败,见图:希望对你有帮助~

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

11.png

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

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

如果不写,那里默认的修饰符是什么呢?
回复 使用道具 举报
接口中的成员都是public的,如果去掉,编译将不会通过,因为接口相当于抽象类,而抽象类的继承必须要复写父类中所有方法,而复写的前提是子类权限必须要大于等于父类,
如果去掉了public,那么子类权限就可能小于父类

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
张宝 中级黑马 2013-3-17 00:46:57
7#
黑马-王鹏 发表于 2013-3-17 00:32
接口中的成员都是public的,如果去掉,编译将不会通过,因为接口相当于抽象类,而抽象类的继承必须要复写父 ...

啊!原来这样,谢了....
回复 使用道具 举报
聂斌 中级黑马 2013-3-17 01:49:14
8#
接口中的成员都有固定修饰符
        常量:public static final,,如果这里少写了final,只要是interface修饰 类,那么它会自动帮你加上final,少写static final,也会帮你加,少写public static final也会帮你加
        方法:public abstract   这里不写public abstract,他也会帮你加,,因为你只要写了interface,他里面的成员都有固定修饰符,你少写哪个,就给你补哪个

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

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马