java 程序帮忙解释一下

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:00:46
interface A1{
int MAX=5;
void disp(String s);
}
interface A2 extends A1{
int MIN=0;
void disp(String s);
}
class A3 implements A2{
public void disp(String s){
System.out.println("A3:"+s);
}
}
class A4 extends A3{
public void disp(String s){
System.out.println("A4:"+s);
}
public void disp1(String s){
System.out.println("A4(disp1):"+s);
}
}
public class InterTest1 {
public static void main(String[] args) {
A1 a=new A4();
a.disp("love"+a.MAX);//a.disp1("love"+a.MAX)
A2 b=new A3();
b.disp("love"+b.MIN);

}

}
换成注释部分的,运行出错;在类A4里 不是定义了disp1(){}了么?
为什么替换后不行?
还有就是为什么用不了a.MIN
就是不懂才问。。

A1 a = new A4();
a.disp("love" + a.MAX);// a.disp1("love"+a.MAX)
//在这里 a其实是A4的对象,但你是用A1的对象去引用的,作为A1的对象,它当然是没有disp1的方法了,
A2 b = new A3();
b.disp("love" + b.MIN);

要调用也可以,把它转化过来 A4 obj = (A4)a;
obj..disp1("love"+a.MAX)

继承你没搞懂!

a是A4的对象转成A1的对象,这里是上转,A1没disp1()这个方法,所以不能,但a.disp()会回调到A4的disp()中来~既然A1中没min那当然调不到了

A1 a=new A4();
a.disp("love"+a.MAX);//a.disp1("love"+a.MAX)
A2 b=new A3();
b.disp("love"+b.MIN);
我不明白一个问题
你在创建对象时的写法:A1 a=new A4();
你在A4中定义了disp1()方法 并没有在A1中定义disp1()方法
如果把 A1 a=new A4() 改成A4 a=new A4() 就没有问题了
说实话 我不明白你为什么这么写:A1 a=new A4(); A2 b=new A3();
这么写不对吧 是你疏忽还是什么别的原因?