| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 508 人关注过本帖
标题:求教一个私有变量的问题
只看楼主 加入收藏
月夜鬼
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-9-27
收藏
 问题点数:0 回复次数:2 
求教一个私有变量的问题

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,不太明白,望高人指点

搜索更多相关主题的帖子: 变量 
2005-12-03 13:13
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 

在class B中继承了A类中的2个方法,并在B类中自己重载了f这个方法,当调用方法g的时候,由于是直接调用父类中的方法g,在这个方法中,是可以使用父类的私有变量的,只要B类中没有直接使用number这个私有变量就不会有问题的


向着软件工程师的目标前进!
2005-12-03 15:05
月夜鬼
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-9-27
收藏
得分:0 

多谢啊,以前我还理解继承就是单纯地把父类的变量和方法在子类中抄一次
不可以继承的就不抄进去,现在明白了

后来看了super关键字,就完全清楚了
原来B加上默认的构造方法在源程序中应该是
class B
{
B()
{
super();
}

float f(int x,int y)
{
return x*y;
}
}

在B的构造方法里面调用了A的构造方法,所以B的对象里面包含了一个活的A的对象!

2005-12-03 17:30
快速回复:求教一个私有变量的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024398 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved