//建立共性内容 雇员
abstract class Employee
{
private String name; //名字
private String id; //员工编号
private double pay;//薪水
private double bonus ;//奖金
Employee(String name,String id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
}
Employee(String name,String id,double pay,double bonus)
{
this.(name,id,pay);//想这里访问另外一个构造函数,但他的类的是抽象的,使用this他说需要标识符。怎么修改这句话???
//this.(name,id,pay); 应该是这样的
this.bonus = bonus;
}
public abstract void work();//抽象方法
public void show()
{
System.out.println("名字:"+name+"\t员工编号:" +id+"\t薪水"+pay);
}
public void show()
{
System.out.println("名字:"+name+"\t员工编号:" +id+"\t薪水"+pay+"奖金"+bonus);
}
}
//描述程序员
class Programmer extends Employee
{
Programmer(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{//复写其抽象方法
System.out.println("工作是编写代码");
}
}
//描述经理
class Manager extends Employee
{
private double bonus; //奖金
Manager(String name,String id,double pay,double bonus)
{
super(name,id,pay);
this.bonus = bonus;
}
public void work()
{
System.out.println("工作是管理程序员");
}
}
class Abstract //主类
{
public static void main(String[] args)
{
Programmer pr = new Programmer("张三","技术部01",3000);
Manager ma = new Manager("王五","经理",9000, 5000);
pr.show();
pr.work();
ma.show();
ma.work();
}
}
补充一下this用法
this是指对象本身,super则是代表其父类,都是在定义类的时候用到 ;
this关键字只能出现在方法内部,表示调用方法的那个对象的引用,通常情况下编译器会自动帮你添加,只有当你明确指出当前对象的引用时才需要使用this关键字,例如当需要返回当前对象的引用时就常常在return语句里这么写:
object A{
……
return this;
}
如果想在意个构造器重调用另一个构造器,以避免重复代码,你可以用this做到这一点,在构造器中,如果为this添加了参数列表,那么就有了不同的含义,这将产生对符合此参数列表的摸个构造器的明确调用。但并不能在一个构造器中用相同的方法调用两个构造器,而且必须将this调用构造器这行至于最顶端。
super和this的用法一样 只不过指定的父类对象 |