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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 匡文 中级黑马   /  2013-10-17 23:38  /  1338 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 匡文 于 2013-10-18 00:30 编辑

今天跟同学讨论遇到一个问题,请教一下坛子里的各位前辈
代码如下
  1. class Pencil{
  2.         String name = "Pencil";
  3. }

  4. interface Erase{
  5.         String name = "Erase";
  6. }

  7. class PencilEras extends Pencil implements Erase{

  8. }

  9. class Demo8{
  10.         public static void main(String[] args){
  11.                 PencilEras pe = new PencilEras();
  12.                 System.out.println(pe.name);
  13.         }
  14. }
复制代码
编译报错:
Demo8.java:16: 错误: 对name的引用不明确, Pencil中的变量 name和Erase中的变量 name
都匹配
                System.out.println(pe.name);
                                     ^
1 个错误

也就是接口和父类有同名的成员变量,用pe.name调用时就会如上错误。但是如果我不调用pe.name,编译不会报错,也就是说,这种继承方式语法上没有问题,而且测试到可以通过Erase.name来调用到接口的这个变量,但是不知道如何才能调用到父类的name?



评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 很给力!

查看全部评分

2 个回复

正序浏览
風諾 发表于 2013-10-17 23:43
你的铅笔和橡皮有仇,一个写一个擦,不合作!
哈哈,开个玩笑

谢谢!看来我还没有完全消化多态:lol,要好好学习
回复 使用道具 举报
本帖最后由 風諾 于 2013-10-17 23:45 编辑

你的铅笔和橡皮有仇,一个写一个擦,不合作!
哈哈,开个玩笑

建立对象时,用多态的特性
Pencil pe = new PencilEras();就可以访问父类name了


评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 很给力!

查看全部评分

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