新手学java多态 求大神帮忙解答

图片说明
图片说明
class A{
String str1= "A的实例变量";
static String str2 = "A的静态变量";
void m(){
A a = new B();
System.out.println(a.str1);
System.out.println(a.str2);
}
}
class B extends A{
String str1= "B的实例变量";;
static String str2 = "B的静态变量";
}
public class Test{
public static void main(String[] args){

A s = new A();
s.m();
}
}

按第一行说的 结果应该是 A啊

A a = new B();
System.out.println(a.str1);
System.out.println(a.str2);
肯定输出A的,因为两个类的str1 str2都是私有变量,A类里面调用B,根本看不到B的str1 str2,幸好 A 也有。

实例方法中访问其它成员,包括静态变量和实例变量,也都总是优先寻找对象实例的具体构造类型那一级的实现。又是什么意思?

这个是不属于接口与抽象类的,不要复杂了,你实例化对象,如果都有会采取就近原则!