本帖最后由 gmz158 于 2014-8-5 00:36 编辑
/**
面向对象中的继承
在创建一个类时,系统会自动给出无参构造函数,而如果手动给出了带有参数的构造函数,
系统则不会再给出构造函数,需要自己手动给出。构造函数是用来进行属性初始化的。
Staff中的属性为私有属性,只能在本类中调用,需要给出公开的get/set方法。
Staff为抽象类,其方法可以为抽象的,也可以不为抽象的,
Programmer/Manager继承了Staff,而类Staff中abstract work();为抽象方法,
其子类Programmer/Manager需要重写这个方法
*/
class Demo5
{
public static void main(String[] args)
{
Manager man=new Manager("张三",01,3500,2000);
System.out.println("name:"+man.getName()+"number:"+man.getNumber()+"pay:"+man.getPay()+"money:"+man.getMoney());
man.work();
Programmer pro=new Programmer("李四",02,2000);
System.out.println("name:"+pro.getName()+"number:"+pro.getNumber()+"pay:"+pro.getPay());
pro.work();
}
}
abstract class Staff
{
private String name;
private int number;
private int pay;
Staff(){}//手动给出无参构造函数
Staff(String name,int number,int pay)//三个参数的构造函数
{
this.name=name;
this.number=number;
this.pay=pay;
}
abstract void work();//抽象方法
//---------------------get/set方法
void setName(String name)
{
this.name=name;
}
String getName()
{
return name;
}
void setNember(int number)
{
this.number=number;
}
int getNumber()
{
return number;
}
void setPay(int pay)
{
this.pay=pay;
}
int getPay()
{
return pay;
}
}
class Programmer extends Staff
{
Programmer(){}
Programmer(String name,int number,int pay)
{
super(name,number,pay);
}
void work()//重写work方法
{
System.out.println("写程序");
}
}
class Manager extends Staff
{
int money;
Manager(){}
Manager(String name,int number,int pay,int money)
{
super(name,number,pay);
this.money=money;
}
void work()//重写work方法
{
System.out.println("处理事务");
}
//--------------------------------
void setMoney(int money)
{
this.money=money;
}
int getMoney()
{
return money;
}
}
|