虚拟机分不清你要的是那个,只能异常。将父类和接口中的成员 和接口中的常量定义成不同名称即可作者: 黑马张涛 时间: 2012-8-30 19:07
interface father
{
int q=2;
}
class father2
{
int q;
}
public class Test extends father2 implements father {
public static void main(String[] args) {
father2 f2 = new father2();
f2.q=1;
Test test = new Test();
System.out.println(father.q);
System.out.println(f2.q);
}
}
楼主,你是这个意思吗?这可以访问啊作者: 黄珊珊 时间: 2012-8-31 07:04
黑马张涛 发表于 2012-8-30 19:07
interface father
{
int q=2;
interface father
{
int q =2;
}
class father2
{
int q = 1;
}
class Test extends father2 implements father
{
public void show()
{
System.out.println(q);
}
public static void main(String[] args)
{
new Test().show();
}
}作者: 魏-玉-彪 时间: 2012-8-31 07:07
interface father
{
int q =2;
}
class father2 extends father1
{
int q = 1;
}
class Test extends father2
{
public void show()
{
System.out.println(q);
}
public static void main(String[] args)
{
new Test().show();
}
}
不过这样很乌龙,没什么意义 作者: 黑马张涛 时间: 2012-8-31 09:16
System.out.println(father.q);//new father2().q 那这就看你到底需要访问那个了,直接输一个q不行,编译器不知道执行那个作者: 黄珊珊 时间: 2012-8-31 11:31
明白了,谢谢!作者: 黑马--张帅 时间: 2012-9-1 19:17
interface Inter
{
public static final int q = 2;
public abstract void show();
}
class Demo implements Inter
{
int q = 1;
public void show(){}
}
class interfaceDemo
{
public static void main(String[] args)
{
Demo d = new Demo();
System.out.println(d.q);
}
}
在这个程序中最后输出的是子类中的q,我想应该是这样的:
接口中的成员变量只能定义为常量存在于常量池中并没有存在于子类对象中所以创建子类对象调用q时优先调用子类中的q,所以最后输出的结果应该是1.