一个关于运行多态的基础问题

acheng3920 2002-11-05 10:42:11
源代码如下:
public class A{
public int i,j;
public void println(){
System.out.println("A");
}
}
public class B extends A{
public int i;
public void println(){
System.out.println("B");
System.out.println(i);
System.out.println(j);
}
public void print(){
System.out.println("print");
}
public void setI(){
System.out.println(i);
}

}
class test
{
public static void main(String[] args)
{
A a = new B();
a.i=3;
a.j=4;
a.println();
//a.print();
//a.setI();


}
}
请问
1、A a = new B()这是一个什么概念
2、a.i 中的i到底是子类的还是父类的,我认为是初始化了子类的i,那么a.println()应该打印出 i的值为3

谢谢帮我解答
...全文
27 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Carlson Wang 2002-11-06
  • 打赏
  • 举报
回复
a.i中的i是父类的,因为定义的a 是A类的
但println()中使用的i 是子类的
若子类没有才会去父类中找继承的属性,这是因为a是A类的,只是用B类初始化了。
fastmask 2002-11-06
  • 打赏
  • 举报
回复
1.A a = new B()就是把一个子类句柄赋给了一个基类句柄了
2.a.i是子类的阿,子类的字段覆盖了基类的同名字段
xxy802 2002-11-06
  • 打赏
  • 举报
回复
A a = new B() a子类 a.i是子类的
在java中习惯用父类声明用子类初始化

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧