黑马程序员技术交流社区

标题: 父类和接口中有同名的属性,访问时报错 [打印本页]

作者: 匡文    时间: 2013-10-17 23:38
标题: 父类和接口中有同名的属性,访问时报错
本帖最后由 匡文 于 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?




作者: 風諾    时间: 2013-10-17 23:43
本帖最后由 風諾 于 2013-10-17 23:45 编辑

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

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



作者: 匡文    时间: 2013-10-18 00:29
風諾 发表于 2013-10-17 23:43
你的铅笔和橡皮有仇,一个写一个擦,不合作!
哈哈,开个玩笑

谢谢!看来我还没有完全消化多态:lol,要好好学习




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