java构造方法调用问题

class Employee{ String name; private int age; private double salary; public Employee(String newName,int newAge, double newSalary) { Employee(newAge,newSalary); System.out.println("三个参数的构造方法被调用"); name=newName; } public Employee(int newAge,double newSalary) { Employee(newSalary); System.out.println("两个参数的构造方法被调用"); } public Employee(double newSalary){ Employee(); System.out.println("一个参数的构造方法被调用"); } public Employee() {System.out.println("没有构造方法被调用"); } void setAge(int newAge){ int age=0; age=newAge; } int getAge(){ return age; } public static void main(String args[]) { Employee s1=new Employee("李四",30,8000); s1.setAge(31); System.out.println("年龄是"+s1.getAge()); } } 里面有几个错,求大大们更正

第1个回答  2014-05-19
1、完全可以,而且,在swing程序中经常用到。这样写的话,第一次调用父类构造方法,但子类覆盖了print方法,输出j,此时j未初始化,为0,接着子类构造方法调用print,此时j初始化为30,输出30,最后main方法中输出改变后的j,输出40。即得序列03040
为了证明上面执行过程是正确的,你可以调试一下,或者将j改为静态,这样,他在调用父类之前会初始化,所以序列就为303040
2、static方法属于类本身,所以父类构造函数调用的还是父类的,就出现了:
执行到了
10
3040
打字不易,如满意,望采纳。追问

你是瞎回答的吧大哥?这段代码在我的编译器里是有错的,然后你说的答案跟实际答案也不搭边

第2个回答  2014-05-19
复制粘贴即可

class Employee
{
String name;
private int age;
private double salary;

public Employee ( String newName, int newAge, double newSalary )
{
this (newAge, newSalary);
System.out.println ("三个参数的构造方法被调用");
name = newName;
}

public Employee ( int newAge, double newSalary )
{
this (newSalary);
System.out.println ("两个参数的构造方法被调用");
}

public Employee ( double newSalary )
{
this ();
System.out.println ("一个参数的构造方法被调用");
}

public Employee ()
{
System.out.println ("没有构造方法被调用");
}

void setAge ( int newAge )
{
age = newAge;
}

int getAge ()
{
return age;
}

public static void main ( String args[] )
{
Employee s1 = new Employee ("李四", 30, 8000);
s1.setAge (31);
System.out.println ("年龄是" + s1.getAge ());
}
}

本回答被提问者采纳
相似回答
大家正在搜