重读java编程思想之向上转型一
2016-05-09 16:33
274 查看
本文的内容和例子很多都来源于java编程思想
package com.scujcc.base.seven;
/**
* <b>修改记录:</b>
* <p>
* <li>
*
* </li>
* </p>
*
* <b>类说明:</b>
* <p>
*
* </p>
*/
public class Wind extends Instrument{
/**
* <b>方法说明:</b>
* <ul>
*
* </ul>
* @param args
*/
public static void main(String[] args) {
Wind f = new Wind();
Instrument.tune(f);
}
}
class Instrument{
public void play(){
System.out.println("play");
}
}
// console: play
从上面的例子可以看出一个很有趣的东西,Instrument里面有的play(),子类wnid()也具备,特别是tune()本身可以接受Instrument引用,但是在Wind.main()中传给tune()的确实一个Wind引用,由于java的检查机制,竟然通过了,那么除非java检查机制默认Wind对象同样也是一种特殊的Instrument对象,且不存在任何tune()方法是可以通过Instrument来调用,同时又不存在Wind对象之中,而这种程序可以对Instrument和它所有的导出类起作用,我们把Wind对象引用转换成了Instrument引用的动作和行为称之为向上转型。
package com.scujcc.base.seven;
/**
* <b>修改记录:</b>
* <p>
* <li>
*
* </li>
* </p>
*
* <b>类说明:</b>
* <p>
*
* </p>
*/
public class Wind extends Instrument{
/**
* <b>方法说明:</b>
* <ul>
*
* </ul>
* @param args
*/
public static void main(String[] args) {
Wind f = new Wind();
Instrument.tune(f);
}
}
class Instrument{
public void play(){
System.out.println("play");
}
}
// console: play
从上面的例子可以看出一个很有趣的东西,Instrument里面有的play(),子类wnid()也具备,特别是tune()本身可以接受Instrument引用,但是在Wind.main()中传给tune()的确实一个Wind引用,由于java的检查机制,竟然通过了,那么除非java检查机制默认Wind对象同样也是一种特殊的Instrument对象,且不存在任何tune()方法是可以通过Instrument来调用,同时又不存在Wind对象之中,而这种程序可以对Instrument和它所有的导出类起作用,我们把Wind对象引用转换成了Instrument引用的动作和行为称之为向上转型。
相关文章推荐
- 详解spring事务属性(总结的很好)
- 用eclipse运行java程序显示找不到main class,网上的方法都试了,还是不行,有没有知道怎么解决的呀!
- java获取当前操作系统
- eclipse 快捷键整理
- Java 本地方法
- java.util.Collections 空集合
- java枚举解析
- spring 注解
- dubbo入门介绍及结合spring搭建(源码放送)
- JavaEE中struts2实现文件上传下载功能实例解析
- Spring-JDBC通用Dao
- Java:类与继承
- 生产者/消费者问题java实现
- Kafka使用Java客户端进行访问
- 什么是对象?
- Java 新I/O 通道和缓冲器
- 九龙_Java开发之路_1
- Java基础9
- Java异常
- Java设计模式 · 观察者模式