面向对象之多态

面向对象之多态

个人理解为:

多态的定义要在 继承、重写的基础之上而言的一个面向对象的特性,即某一个父类存在多种形态,而这种形态就是子类。

多态的存在两种转型 一种则使默认的向上转型,如果子类重写了父类的方法,那么在调用方法时,首先在父类中找,如果父类存在该方法,那么就调用父类中的方法,否则调用子类的方法。

父类类型 变量名 = new 子类类型();

如:Animal a = new Cat();

另一种转型则是向下转型:

如果是父类像子类进行转型时,则需要进行强制转换。一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。

如:

子类类型 变量名 = (子类类型) 父类变量名;

如:Cat c =(Cat) a;

小练习:

1、教师拥有教师的信息

2、学院拥有学院的信息

3、学院的打印机能够以完成对教师信息的打印

4、学院的打印机能够完成对学院信息的打印

5、要求系统拥有良好的维护性和可扩展性

解题思路:

为了使系统有一个良好的维护性和可扩展性,

那么 打印机的种类应该有 3D打印机、激光打印机、彩色打印机、黑白打印机等等多种打印机。

那么 所要打印的信息类型也是多种多样的,有学生的信息、教师的信息、求职者的信息等等信息。

所以:

interface printers

public interface printers {
    public abstract String show();
}
​
public class Teacher implements printers {
​
    @Override
    public String show() {
        return "教师信息";
    }
}

College.java

public class College implements printers {
​
    private Prints prints;
​
    public void setPrints(Prints prints) {
        this.prints = prints;
    }
    public void prints(printers printers){
        prints.printf(printers);
    }
​
​
​
    @Override
    public String show() {
​
        return "学院信息";
    }
}
public interface Prints {
    public void printf(printers printers);
}
public class BalckPrints implements Prints {
​
    @Override
    public void printf(printers printers) {
        System.out.println("Start print Balck .........");
        System.out.println(printers.show()+"正在打印..........");
    }
}
public class ColorPrints implements Prints {
    @Override
    public void printf(printers printers) {
​
        System.out.println("Start print color.....");
        System.out.println(printers.show()+"正在打印........");
    }
}
public class Test {
    public static void main(String[] args) {
        printers printers=new Teacher();
        Prints prints=new BalckPrints();
        prints.printf(printers);
    }
}

那么这样一来就可以实现系统的可维护性和扩展性,比如说 还可以增加更多的打印者和更多的打印机类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值