abstract class Employee
{
private String name;
private String id;
private double pay;
Employee(String name,String id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
} public abstract void work();
}
//描述程序员。
class Programmer extends Employee
{
Programmer(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("code...");
}
}//描述经理。
class Manager extends Employee
{
private int bonus;
Manager(String name,String id,double pay,int bonus)
{
super(name,id,pay);
this.bonus = bonus;
}
public void work()
{
System.out.println("manage");
}
}
class AbstractTest
{
public static void main(String[] args)
{
}
}主方法那没写内容。想问下private String name;
private String id;
private double pay;
Employee(String name,String id,double pay)
{
一开始不是定义了 String name 有默认初始化了吗?为什么还要定义一个Employee方法传入 name,id,pay初始化呢? 不是很懂
{
private String name;
private String id;
private double pay;
Employee(String name,String id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
} public abstract void work();
}
//描述程序员。
class Programmer extends Employee
{
Programmer(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("code...");
}
}//描述经理。
class Manager extends Employee
{
private int bonus;
Manager(String name,String id,double pay,int bonus)
{
super(name,id,pay);
this.bonus = bonus;
}
public void work()
{
System.out.println("manage");
}
}
class AbstractTest
{
public static void main(String[] args)
{
}
}主方法那没写内容。想问下private String name;
private String id;
private double pay;
Employee(String name,String id,double pay)
{
一开始不是定义了 String name 有默认初始化了吗?为什么还要定义一个Employee方法传入 name,id,pay初始化呢? 不是很懂
你说的默认初始化和老师或者说我们实际说的初始化有些不同吧,
private String name;
private String id;
private double pay;
这三个是类的成员变量,也就是常说的类的属性,jvm会给成员变量默认初始化的,引用默认初始化为null,简单类型针对不同的类型初始化为不同的值。所以这三个属性如果你没有在构造方法中传入有效的值,或者调用setter方法,就是null,null,0.0,
而我们平时说的初始化其实是指给属性赋值,因为我们要获得这些属性的值去做运算,如果没有在构造的时候传入值,这些数据对实际应用中就是指没有初始化的,是没有意义的。
其实就是初始化的偏向不同,默认初始化时专业的术语,而我们说的初始化时偏向开发应用的。
祝:爱思考的楼主学习进步~