import java.applet.*;
import java.awt.*;
class A
{
private int number=100;
float f(int x,int y)
{
return x+y;
}
float g(float x,float y)
{
return x+y+number;
}
}
class B extends A
{
float f(int x,int y)
{
return x*y;
}
}
public class Example
{
public static void main(String args[])
{
B b=new B();
System.out.println(b.f(2,5));
System.out.println(b.g(2,5));
}
}
程序的输出结果:(能成功运行)
10.0
107.0
在这个例子里
类A有私有变量number
后面有个方法g()操作了这个私有变量
后面子类B继承A,应该只继承了A的f()方法和g()方法,而A的私有变量number应该没有被继承,但是继承的g()方法中又用到了number,这合法吗?
这里的B就好像有如下定义的感觉:
class B
{
float f(int x,int y)
{
return x*y;
}
float g(float x,float y)
{
return x+y+number;
}
}
中间的number就有种不知来路的感觉
再就是后面类Example的主方法中,用B创建了一个对象b,那么b的成员变量应该没有number
而这里b的g()方法的number不但具有意义,而且继承了类A的number及其值
本人刚学java,不太明白,望高人指点