class CommissionEmployee
{
   protected String firstName;
   public CommissionEmployee( String first )
   {
      firstName = first;   } 
   public void setFirstName( String first )
   {
      firstName = first;
   } 
   public String getFirstName()
   {
      return firstName;
   } 
   } public class BasePlusCommissionEmployee 
{
   private double baseSalary; 
   private CommissionEmployee ce;
   public BasePlusCommissionEmployee( String firstdouble salary )
   {
      ce = new CommissionEmployee( "Bob);
      setBaseSalary( salary ); 
   } 
   
   public void setBaseSalary( double salary )
   {
      baseSalary = ( salary < 0.0 ) ? 0.0 : salary;
   } 
   public double getBaseSalary()
   {
      return baseSalary;
   } 
} class BasePlusCommissionEmployeeTest 
{
   public static void main( String args[] ) 
   {
      BasePlusCommissionEmployee basePlusCommissionEmployee = 
         new BasePlusCommissionEmployee( 
         "Bob", 300 );
      System.out.printf( "%s %s\n", "First name is",
         ce.getFirstName() );
          System.out.printf( "%s %.2f\n", "Base salary is",
         basePlusCommissionEmployee.getBaseSalary() );
         } 

这个程序编译时发现错误如下:说不能找到变量ce,怎么回事啊。???

解决方案 »

  1.   

    ce是 BasePlusCommissionEmployee 类的私有变量,在类BasePlusCommissionEmployeeTest 中当然无法访问,建议你修改如下class CommissionEmployee {
    protected String firstName; public CommissionEmployee(String first) {
    firstName = first; } public void setFirstName(String first) {
    firstName = first;
    } public String getFirstName() {
    return firstName;
    }
    }class BasePlusCommissionEmployee {
    private double baseSalary; private CommissionEmployee ce; public BasePlusCommissionEmployee(String first, double salary) {
    ce = new CommissionEmployee("Bob");
    setBaseSalary(salary);
    } public void setBaseSalary(double salary) {
    baseSalary = (salary < 0.0) ? 0.0 : salary;
    } public double getBaseSalary() {
    return baseSalary;
    } public String getFirstName() {
    return ce.getFirstName();
    }
    }public class BasePlusCommissionEmployeeTest {
    public static void main(String args[]) {
    BasePlusCommissionEmployee basePlusCommissionEmployee = new BasePlusCommissionEmployee(
    "Bob", 300);
    System.out.printf("%s %s\n", "First name is",
    basePlusCommissionEmployee.getFirstName());
    System.out.printf("%s %.2f\n", "Base salary is",
    basePlusCommissionEmployee.getBaseSalary());
    }
    }
      

  2.   

    谢谢提醒哦,呵呵,明白了,原来我也是像你那样做的。
    现在想问的是我把private 改成public 为什么也不能调用啊。。??
      

  3.   

    高手能不能给我提写意见啊。刚学java不久,很多都不懂啊,怎么都没有人回答我啊。。呵呵
      

  4.   

    我是说我改成了public也不能调用啊。。?怎么回事呢