Java多态的基础问题

AbnerChai 2004-08-06 12:50:43
一个类Child继承Father,同时实现接口TestInterface
若在类Father和接口TestInterface中同时都定义了一个变量:
public String testStr;

现在在类Child中直接访问testStr,请问,它是指哪个testStr?
是Father类的还是接口的?如何区分,有没有办法像C++中的virtual
方式的声明?
谢谢!
...全文
176 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dynamic 2004-08-08
  • 打赏
  • 举报
回复
当然,最好的解决方案是采用好的命名习惯,不产生这种容易混淆的代码
Dynamic 2004-08-08
  • 打赏
  • 举报
回复
System.out.println( child1.ia );//输出什么???????
编译出错,说ia不明确。

可以用oswicer(低人) 兄的解决方案,
也可以用强制类型转换的方法如下:
System.out.println((Father)child1.ia );//1
System.out.println((Interface1)child1.ia );//2
limd 2004-08-08
  • 打赏
  • 举报
回复
楼上的 System.out.println( child1.ia );//输出什么???????会出错,编译不了的
AbnerChai 2004-08-07
  • 打赏
  • 举报
回复
如果确实存在二者名称相同了,且在接口中是静态的,
请问在子类中直接取变量取的是哪一个呢?会发生什么呢?
如下例:
public class Father {
public static int ia = 1;

public Father() {
}
}

public interface Interface1 {
public int ia = 2;
}

public class Child extends Father
implements Interface1
{
public Child() {
}
public static void main(String[] args) {
Child child1 = new Child(); //这里用Child定义。
System.out.println( child1.ia );//输出什么???????

}

}

qbjun 2004-08-06
  • 打赏
  • 举报
回复
不能同时定义同一个变量!

oswicer 2004-08-06
  • 打赏
  • 举报
回复
public class Father {
public int ia = 1;

public Father() {
}
}

public interface Interface1 {
public int ia = 2;
}

public class Child extends Father
implements Interface1
{
public Child() {
}

public static void main(String[] args) {
Interface1 child1 = new Child();
System.out.println( child1.ia );//输出2

Father child2 = new Child();
System.out.println( child2.ia );//输出1

}

}

只能这样区分了
boyard 2004-08-06
  • 打赏
  • 举报
回复
接口中只能有常量。
csdnseeman 2004-08-06
  • 打赏
  • 举报
回复
在c++这种允许多重继承的语言中,如果出现楼主提出的上面情况,也是无法编译通过的。
horseliu 2004-08-06
  • 打赏
  • 举报
回复
嘿嘿,概念不清楚,你在任何一个接口中写
public String testStr;
试试,肯定错嘛!
ztc16627 2004-08-06
  • 打赏
  • 举报
回复
interface中定义的是常量
fishstudio 2004-08-06
  • 打赏
  • 举报
回复
是的,接口虽然是一种多重继承的替代,但并不是完全实现多重继承,这样子就是说,你在Java当中要牢牢记清,没有多重继承。不要妄想拉,那帮开发的家伙跟本就是跟c++背着走的

但是你说的接口确实很有用,但是如果能从父类继承,那么一定不要再利用接口

现在自定义的接口在这种几乎完美的语言里显得很苍白!
limd 2004-08-06
  • 打赏
  • 举报
回复
出错
shine333 2004-08-06
  • 打赏
  • 举报
回复
除了常量以外, 你不能在interface里面定义变量
TinyJimmy 2004-08-06
  • 打赏
  • 举报
回复
大概没有试过吧. interface只能定义static变量, 即时没加static

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧