当前位置:编程学习 > JAVA >>

关于初始化的问题想请问下



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初始化呢?     不是很懂  --------------------编程问答-------------------- 就是子类必须先初始化父类 --------------------编程问答-------------------- 那个是带参构造函数,有参数的构造函数就是你建立对象的时候可以传值进去,当然你也可以不写,不写的话就默认是无参构造函数,会有一个默认值,但就一个值呀,难道你不用传值吗? --------------------编程问答--------------------
引用 2 楼 u011393115 的回复:
那个是带参构造函数,有参数的构造函数就是你建立对象的时候可以传值进去,当然你也可以不写,不写的话就默认是无参构造函数,会有一个默认值,但就一个值呀,难道你不用传值吗?
谢了,基础不扎实,理解错了 --------------------编程问答--------------------
引用 1 楼 scqlmm 的回复:
就是子类必须先初始化父类
谢了  --------------------编程问答-------------------- 楼主是新学Java吧,这个问题说明你喜欢思考,这些事Java中重要的特性。
你说的默认初始化和老师或者说我们实际说的初始化有些不同吧,
private String name;
private String id;
private double pay;
这三个是类的成员变量,也就是常说的类的属性,jvm会给成员变量默认初始化的,引用默认初始化为null,简单类型针对不同的类型初始化为不同的值。所以这三个属性如果你没有在构造方法中传入有效的值,或者调用setter方法,就是null,null,0.0,
而我们平时说的初始化其实是指给属性赋值,因为我们要获得这些属性的值去做运算,如果没有在构造的时候传入值,这些数据对实际应用中就是指没有初始化的,是没有意义的。
其实就是初始化的偏向不同,默认初始化时专业的术语,而我们说的初始化时偏向开发应用的。
祝:爱思考的楼主学习进步~ --------------------编程问答--------------------
引用 5 楼 ysjian_pingcx 的回复:
楼主是新学Java吧,这个问题说明你喜欢思考,这些事Java中重要的特性。
你说的默认初始化和老师或者说我们实际说的初始化有些不同吧,
private String name;
private String id;
private double pay;
这三个是类的成员变量,也就是常说的类的属性,jvm会给成员变量默认初始化的,引用默认初始化为null,简单类型针对不同的类型初始化为不同的值。所以这三个属性如果你没有在构造方法中传入有效的值,或者调用setter方法,就是null,null,0.0,
而我们平时说的初始化其实是指给属性赋值,因为我们要获得这些属性的值去做运算,如果没有在构造的时候传入值,这些数据对实际应用中就是指没有初始化的,是没有意义的。
其实就是初始化的偏向不同,默认初始化时专业的术语,而我们说的初始化时偏向开发应用的。
祝:爱思考的楼主学习进步~
   谢了,请问下除了看视频 你们还看什么书 或其他方式来学习呢 --------------------编程问答-------------------- 刚开始的时候以视频为主导,视频推荐毕向东的http://edu.csdn.net/news/2012821/83780387427c.shtml,跟着练习实践,慢慢的你就会遇到一些问题,然后会思考,这个时候可以结合书籍来学习,书籍推荐《Java核心技术》上卷,学习编程主要你得是真兴趣,这样你就会进步很快,记住一定多敲代码
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,