嘿嘿,概念不清楚,你在任何一个接口中写 public String testStr; 试试,肯定错嘛!
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 }}只能这样区分了
如果确实存在二者名称相同了,且在接口中是静态的, 请问在子类中直接取变量取的是哪一个呢?会发生什么呢? 如下例: 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 );//输出什么??????? }}
public String testStr;
试试,肯定错嘛!
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 }}只能这样区分了
请问在子类中直接取变量取的是哪一个呢?会发生什么呢?
如下例:
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 );//输出什么??????? }}
编译出错,说ia不明确。可以用oswicer(低人) 兄的解决方案,
也可以用强制类型转换的方法如下:
System.out.println((Father)child1.ia );//1
System.out.println((Interface1)child1.ia );//2