public class Department {
public String name;
private int number;
public Department() {
super();
}
public Department(String name, int number) {
super();
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public void business(){
System.out.println("为集团引进IT设备");
}
public int aveSalary(int sum){
System.out.println("部门平均薪水"+sum);
return sum;
}
public class SoftDep extends Department {
private boolean programming;
public SoftDep() {
super();
}
public SoftDep(boolean programming) {
super();
this.programming = programming;
}
public boolean isProgramming() {
return programming;
}
public void setProgramming(boolean programming) {
this.programming = programming;
}
public void business(){
System.out.println("为集团引进软件和系统");
}
public int aveSalary(int sum){
System.out.println("薪水较高");
return sum;
}
public void future(){
System.out.println("前景较好");
}
package lianxi2;
public class HardDep extends Department {
private boolean communicate;
public boolean isCommunicate() {
return communicate;
}
public void setCommunicate(boolean communicate) {
this.communicate = communicate;
}
public HardDep() {
super();
}
public HardDep(boolean communicate) {
super();
this.communicate = communicate;
}
@Override
public int aveSalary(int sum) {
System.out.println("薪水较低");
return sum;
}
@Override
public void business() {
System.out.println("负责引进硬件设施和网络");
}
public void future(){
System.out.println("前景堪忧");
}
}
package lianxi2;
public class TestDep {
public static void main(String[] args) {
TestDep t = new TestDep();
Department d = new Department("信息中心",001);
//d.name; --------------只是一个属性不能作为语句,调用一个方法可以
System.out.println(d.name);
System.out.println(d.getName());
System.out.println(d.getNumber());
d.business();
System.out.println(d.aveSalary(4000));
Department d1 = new SoftDep(true); //向上转型,只能调用子类中重写父类的方法
if(d1 instanceof SoftDep){
// System.out.println(d1.isProgramming()); ---------------属性没有多态性
System.out.println(d1.aveSalary(5000));
d1.business();
SoftDep so = (SoftDep)d1; //向下转型,可以调用所有子类中的方法
System.out.println("$"+so.aveSalary(5000));
so.future();
System.out.println(so.isProgramming());
t.func(new SoftDep());
}
System.out.println("\n\n");
t.func(new HardDep());
}
public void func(Department d3){
d3.business();
System.out.println(d3.aveSalary(6000));
if(d3 instanceof HardDep){
HardDep hd = (HardDep)d3;
hd.future();
}
if(d3 instanceof SoftDep){
SoftDep so = (SoftDep)d3;
so.future();
}
}
}