class A
{
int i=10;
void show()
{
System.out.println("class A");
}
}
class B extends A
{
int i=5;
public void show()
{
System.out.println("class B");
}
}
class M
{
public static void main(String s[])
{
A a=new B();
a.show();
System.out.println(a.i);
}
}
OUTPUT= class B
10
Run Code Online (Sandbox Code Playgroud)
如果A类方法被B类方法覆盖那么为什么变量'i'?
interface I
{
void show();
}
class A implements I
{
void show()
{
System.out.println("class A");
}
public static void main(String s[])
{
I i=new A();
i.show();
i.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
Q>作为接口我不包含抽象方法toString()但仍然编译以下代码.怎么样?
当超类变量用于引用子类obj时,编译器首先搜索超类中的类似方法,如果未找到则给出错误.这里接口不包含toString()方法.
EX =>
class A
{
void show()
{
System.out.println("show");
}
}
class B
{
void show()
{
System.out.println("show B");
}
void display()
{
System.out.println("display B");
}
public static void main(String s[])
{
A a=new B();
a.show(); //will execute
a.display(); //give error
}
Run Code Online (Sandbox Code Playgroud) java ×2