黑马程序员技术交流社区
标题:
新手不懂这些代码,麻烦详细解释下
[打印本页]
作者:
刘佳
时间:
2012-8-7 19:36
标题:
新手不懂这些代码,麻烦详细解释下
本帖最后由 刘佳 于 2012-8-7 19:58 编辑
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 Manager extends Employee
{
private int bonus; //奖金不应该是double类型的吗?
Manager(String name,String id,double pay,int bonus)
{
super(name,id,pay);
this.bonus = bonus;
}
/*
方法体一定要在构造函数之外吗,能否定义在构造函数里面呢,
各有何含义呢?
*/
public void work()
{
System.out.println("manager work");
}
}
class Pro extends Employee
{
/*
父类已经初始化过了,为何这里的构造函数还要再进行初始化?
为何这里不能写成空参数的呢,而一定需要标识符呢,
它继承上面的函数,不是直接可以将上面的函数拿过来用吗?
*/
Pro(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("pro work");
}
}
复制代码
作者:
余明辉
时间:
2012-8-7 20:14
//在构造函数中进行初始化。为什么要在构造函数中进行初始化,一般有哪些初始化方式,都如何选择?
还能通过定义setXX的方法来赋值,不过大家都是在构造方法中初始化的,那样简单方便,最重要的就是大家都这样搞,我们也跟着大众这样搞
//奖金不应该是double类型的吗?
这里只是一个模拟,也可以是int,不必太纠结这个
方法体一定要在构造函数之外吗,能否定义在构造函数里面呢,各有何含义呢?
不太明白你这句的意思,一般都是写在构造方法里面的,当然还有一种是写在构造方法外面,叫做构造代码块,用{ }括起来的
并且构造代码块,在new对象的时候,比构造方法先执行
父类已经初始化过了,为何这里的构造函数还要再进行初始化?
为何这里不能写成空参数的呢,而一定需要标识符呢,
它继承上面的函数,不是直接可以将上面的函数拿过来用吗?
这里是子类的构造方法,如果写成空参数的话,那怎么初始化子类对象呢?子类继承父类,但不继承父类的构造方法。
而且这里只是把从父类继承来的3个参数,交给父类的构造方法初始化
说的有点乱,希望可以帮到你,面向对象的概念挺多的,慢慢理解吧
作者:
刘佳
时间:
2012-8-7 20:25
余明辉 发表于 2012-8-7 20:14
//在构造函数中进行初始化。为什么要在构造函数中进行初始化,一般有哪些初始化方式,都如何选择?
还能通 ...
1. 如果下面代码中有setXX的方法来赋值,那么上面的构造方法中还需要那样进行初始化吗?
2. Pro(String name,String id,double pay)
{
super(name, id, pay);
}
public void work()
{
System.out.println("pro work");
}
与以下代码的区别
Pro(String name,String id,double pay)
{
super(name, id, pay);
public void work()
{
System.out.println("pro work");
}
}
3. 虽然是空参数的构造函数,但子类默认第一句有一行隐式super语句,这个不就是进行初始化的吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2