LMK*_*LMK 2 java polymorphism jdbc
我对接口有疑问.
我看过一些代码,他们正在写作
Connection con = Drivermanager.getConnection("URL","User name","Pwd");
Run Code Online (Sandbox Code Playgroud)
这里con(连接接口的参考变量)持有Oracle连接对象.因为我们知道我们正在创建Oracle连接对象,为什么我们不能写
OracleConnectionClass Oraclecon = Drivermanager.getConnection("URL","User name","Pwd");
Run Code Online (Sandbox Code Playgroud)
如果我问一些人他们说,他们通过使用连接接口实现多态性.
但是,有
什么用呢.
我们可以做的
两个引用(con和Oraclecon)创建语句,执行查询等.
simillarly for List和ArrayList
提前感谢
您知道您现在正在创建的确切类型,但由于您自己的代码更改或实施更改,这可能会在将来发生变化.
多态性用于抽象细节,因此您不必在以后触摸代码.如果您在此处使用了确切类型而不是接口,并且该类型已更改,则您必须更改代码.
这种后果似乎很明显.改变代码是工作,工作需要花钱,因此更少的改变意味着更低的成本.
但它的价格更贵.每次更改稳定代码时都有可能引入错误.这个风险很低,但也值得一提.
这就是他们使用界面的原因.
这是多态性的一个很好的例子.
Queue<Float> queue = new LinkedList<Float>();
Run Code Online (Sandbox Code Playgroud)
我们可以简单地改变行为.
Queue<Float> queue2 = new BlockingQueue<Float>();
Run Code Online (Sandbox Code Playgroud)
或者这个怎么样?
Queue<Float> queue3 = new PriorityBlockingQueue<Float>();
Run Code Online (Sandbox Code Playgroud)
所有这些都是我们可以用来快速改变行为的队列.
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |