肯请java高手给我指点:
  下面的程序在编译时为什么出现这样的错误提示:cannot resolve symbol constructor Manager2(java.lang.String,int,java.lang.String,double,java.lang.String)程序如下:
public class Employee2 {
 public String name;
 private int age;
 private String address;
 private float  salary;
 Employee2(String pname,int page,String paddress,float psalary)
  { name=pname;
    age=page;
    address=paddress;
    salary=psalary;
    
    
    System.out.println("这是父类Employee的构造函数");
   }
 Employee2()
 { name="";
   age=-1;
   address="";
   salary=1000;
   
   System.out.println("这是父类Employee的构造函数");
   }
 void printer()
 {System.out.println("姓名:"+name+"  年龄:"+age+"   地址:"+address+"     工资:"+salary);
  
  }
 }
 class Manager2  extends Employee2
 { private  String post="";
   
   Manager2()
    {
    }
   Manager2(String pname,int page,String paddress,float psalary,String apost)
   { super(pname,page,paddress,psalary);
     post=apost;
     System.out.println("这是子类Manager的构造函数");
    }
   void printer()
   {super.printer();
    System.out.println("     职务:"+post);
    }
  }
 class test2{
 public static void main(String args[])
  {Employee2 e1,e2;
   Manager2 m1;
    m1=new Manager2("赵强",20,"济宁师范专科学校",2000.00,"IT Manager"); 
   
     e1=new Employee2();
      System.out.println("e1.printer()");
    e1.printer();
    System.out.println("m1.printer()");
    m1.printer();
   
  }
 }

解决方案 »

  1.   


    对外的构造方法要public~java的默认是private,你不写就是private的~
    这点跟C++刚好相反~
      

  2.   

    to: daniel_kaka(卡卡) 
    谁跟你说的java默认是private的,java默认的是default好不好,也就是(friendly),是包访问权限。回归正题,楼主的参数传错了,
    将 
        m1=new Manager2("赵强",20,"济宁师范专科学校",2000.00,"IT Manager"); 
    改为:
        m1=new Manager2("赵强",20,"济宁师范专科学校",2000.00f,"IT Manager"); 
    java中,float类型的数据必须在后面加上一个“f”标志,否则系统会认为是double型的数据,
      

  3.   

    to:yanhuaxie
     谢谢,我改正后可以运行了,但是我还是有疑问,不是float与double可以相互转换吗?是不是对于构造函数,传递的参数必须与它们的类型完全一样?
      

  4.   

    自动转换是有条件的
    double的精度比float高
    float可以自动转double,但是double不能自动转float对于浮点数,不做标记,认为是double