解决方案 »
- java中JTextField怎么设置只能输入一个数字?
- 如何判断一个英文单词为专用名词?
- 请教一个算法
- 返回泛型参数数组的问题??谢谢!!!
- 告急:关于文件格式与命名规则的问题
- *********高分请教java调用控件的例子*************
- 在JBuilder中,JdbRadioButton组的某一个选中状态如何与值域的对应?
- 一个很基础的问题,各位大虾请帮忙,在下多谢多谢。
- 急急急!!!在java中如何实现,鼠标指向某处时,自动出现此处的提示,象windows那样的
- 有给JAVA专用的测试工具吗?例如测试内存、执行效率等等。
- JTextField 初始提示文字不能显示,需获焦再失焦后才能显示 求解
- 请教一个if语句判断的问题
你要看出区别在B里面加个i变量就看出来了
public class A {
public int i = 1; A() {
System.out.println("A is created and i=" + i);
}
public static void main(String[] args) {
B b = new B();
b.printI();
}
}class B extends A {
int i = 1;
B() {
System.out.println("B is created and i=" + i);
} void printI() {
i++;
System.out.println("i=" + this.i + " " + super.i);
}
}
A is created and i=1
B is created and i=1
i=2 1
不行你把父类中的int i 注释掉,编译都会有问题。
如果你在子类中,新建一个自己的属性public int i = 1;那就和父类分开了。
我来举一个例子,也许可以帮助楼主解决问题。
我把类比喻箱子。现在有箱子A和B。
当我们用new操作符的时候,就是拿箱子的行为。
1.new A的情况,只要取箱子A的内容。
2.new B的情况下,不但要取A的部分,还要取B的部分,组合成一个完整的内容,因为有继承关系。继承的关系不是说把A的代码全部都拷贝到B中,形成新的代码。而是理解当new B的时候,新的引用拥有父类和子类所有的行为。
B继承A,你创建了B的一个对象b,b实际上包括两部分p1,p2,p1是从A继承过来的,p2是自己的,this.i访问的是自己的i,因为p2中没有i,所以实际上访问的就是p1.i,super.i直接指定访问p1.i,所以this.i和super.i是同一个东西。
这个属性i用this指针、super指针都可以访问。
继承,也就继承了父类的方法(私有除外)和变量。在你的代码里父类和子类是共用i这个变量的,如果你想用子类的i->this.i。