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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangshang1 中级黑马   /  2012-3-29 14:18  /  2007 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果类a继承类b,实现接口c,而类b和接口c中定义了同名变量,请问会出现什么问题

3 个回复

正序浏览
【提示:对a的引用不明确,FuDemo中的变量a与InterfaceDemo中的变量a都匹配】
接口中默认修饰是public static final
所以接口中的是常量,而不是变量。
1、super.变量名——应该是可以调用到父类的。
2、接口中的是静态常量,【接口名.常量名】可以调用
回复 使用道具 举报
如果类a继承类b,实现接口c,而类b和接口c中定义了同名变量,请问会出现什么问题?
出现的问题是会报错:对 a 的引用不明确,b中的 变量 a 和 c 中的 变量 a 都匹配 ;
子类可以在第一行用super来指定是父类中b的同名变量a,用super.a(super.常量名)标识。
而接口c中的同名变量a默认修饰是public static final,所以接口中的a是个静态常量而不是变量,用c.a(即接口名.常量名)即可以调用。
回复 使用道具 举报
此时,应该存在,只不过同名的变量有不同的域,如,访问c中的变量,需要用c的方法,访问b的变量,用b的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马