java问题,关于引用变量的
”当从引用变量调用实例方法时,该变量的实际类型在运行时决定使用那个方法实现。当访问数据域或静态方法时,引用变量的声明类型在编译时决定使用哪个方法“,这句话什么意思?举个例...
”当从引用变量调用实例方法时,该变量的实际类型在运行时决定使用那个方法实现。当访问数据域或静态方法时,引用变量的声明类型在编译时决定使用哪个方法“,这句话什么意思?举个例子
展开
1个回答
展开全部
public class F {
int i = 1;
public static void main(String[] args) {
F f = new F();
F fs = new S();
S s = new S();
f.print();
fs.print();
System.out.println(f.i);
System.out.println(fs.i);
System.out.println(s.i);
f.printStatic();
fs.printStatic();
s.printStatic();
//当从引用变量调用实例方法时,该变量的实际类型在运行时决定使用那个方法实现
//F
//S
//当访问数据域
//1
//1
//2
//当访问静态方法,其实应该写成F。printStatic();但是你问的问题这样,索性就这么写了,不错,但是不推荐
//Static F
//Static F
//Static S
}
public void print(){
System.out.println("F");
}
public static void printStatic(){
System.out.println("Static F");
}
}
class S extends F{
int i = 2;
public void print(){
System.out.println("S");
}
public static void printStatic(){
System.out.println("Static S");
}
}
int i = 1;
public static void main(String[] args) {
F f = new F();
F fs = new S();
S s = new S();
f.print();
fs.print();
System.out.println(f.i);
System.out.println(fs.i);
System.out.println(s.i);
f.printStatic();
fs.printStatic();
s.printStatic();
//当从引用变量调用实例方法时,该变量的实际类型在运行时决定使用那个方法实现
//F
//S
//当访问数据域
//1
//1
//2
//当访问静态方法,其实应该写成F。printStatic();但是你问的问题这样,索性就这么写了,不错,但是不推荐
//Static F
//Static F
//Static S
}
public void print(){
System.out.println("F");
}
public static void printStatic(){
System.out.println("Static F");
}
}
class S extends F{
int i = 2;
public void print(){
System.out.println("S");
}
public static void printStatic(){
System.out.println("Static S");
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询