就是java如何解决多重继承的父类方法重名的问题,interface a{
int a=1;
void f();
}interface b{
int a=2;
void f();
}class AB implements a,b{
public static void main(String args[]){
System.out.println(a);
}
}
这代码当然是通不过编译的。
但是java通过接口又是怎样实现多重继承,而又不会产生父类方法重名带来的麻烦的呢?
纳闷ing……
int a=1;
void f();
}interface b{
int a=2;
void f();
}class AB implements a,b{
public static void main(String args[]){
System.out.println(a);
}
}
这代码当然是通不过编译的。
但是java通过接口又是怎样实现多重继承,而又不会产生父类方法重名带来的麻烦的呢?
纳闷ing……
interface a{
int a=1;
void f();
}interface b{
int a=2;
void f();
}class AB implements a,b{
public static void main(String args[]){
f();
}
public static void f(){
System.out.println(a);
}
}
2.接口没有具体实现.
所以你说的f()调用的是谁无关紧要.而System.out.println(a)是从语法上不成立的.最后Java中接口不是设计用来多重继承的,至少这样理解比较好.
从面向对象的角度讲,接口仅仅代表对一种能力或行为的约定,至于说利用它达到多重继承,这属于技巧问题.
另外实现方法不能你这样写。
接口内的属性的属性声明如下:
public static final *****
请具体说明如何实现两个含有相同变量名或者方法名的接口?另外,给你更正一下,public final是默认的,可以不写。 static 是可选的 ,当然也可以不写。
只能声明常量。
2.可以通过编译,但是AB类只会实现一个方法。楼主多看看语法规范吧。package test;public interface A {
public void test();
}package test;public interface B {
public void test();
}package test;public class AB implements A, B { public void test() {
}}
但是,同名的属性,如果在类中被调用,还是会出错呀?!
还有就是,属性不必须是static吧?!
1.两个接口定义相同的方法,没有必要,画蛇添足
2.可以通过编译,但是AB类只会实现一个方法。
但是两个接口中相同的变量是编译不过的。变量不需要显示的定义为public static final ,默认的就是这样的。
即:ina a 与public static final int a 是一样的。
int a=0;
public void test();
}package test;public interface B {
int a=5;
public void test();
}package test;public class AB implements A, B { public void test() {
} public static void main(String[] args){
A a = new AB();
System.out.println(a.a);//输出0
B b = new AB();
System.out.println(b.a);//输出5
}
}
也就是 static final int a = 1;
它是最终的,不能被修改的。