杭州上城区Java培训哪家好
阶段性学习内容 | |||
一阶段 | Java基础Java基础语法、面向对象、异常处理、集合框架、常用类、I/O操作、多线程、网络编程、XML解析 | 第二阶段 | JavaWeb网站开发HTML5、CSS3、JavaScript/ES6、JQuery、JSP/Servlet、MySQL数据库、JDBC、Linux、SVN |
第三阶段 | SSM/SSH框架MyBatis框架、Spring框架、Spring MVC框架、Struts2框架、Hibernate框架、Git、Maven 、Oracle数据库 | 第四阶段 | 基于分布式微服的互联网架构分布式微服架构、Dubbox、Spring Cloud、Spring Boot、Docker环境搭建实现自动化部署、分布式下ID唯 一性、Redis、分布式事务处理、分布式下三方接入、Active MQ消息队列等 |
第五阶段 | Python爬虫+ELK+分析Linux Shell编程、Python编程、NumPy&Pandas、Scrapy、LXML、PySpider、数据采集、整理和清洗、Elasticsearch、Logstash、Kibana | 第六阶段 | Hadoop生态圈HDFS、MapReduce、YARN、Hive、Sqoop、HBase |
第七阶段 | Spark技术栈Scala编程、Spark RDD、Spark SQL、Spark GraphX、PySpark、Jupyter、Hadoop数据模型、Atlas&Ranger、NiFi、Kafka、Oozie、Cassandra&Hive、Redis&Hive、MongoDB、Tableau | 第八阶段 | 实时流处理平台Spark Streaming、Flink、Flume、Storm、d3.js、Echarts,机器学习Spark Mllib |
下面我来解释下静态分派和动态分派。
静态分派
看下面这段程序
1//定义几个类 2 3public abstract class Animal { 4 } 5class Dog extends Animal{ 6 } 7class Lion extends Animal{ 8 } 910class Test4{ 11 public void run(Animal animal){12 System.out.println("动物跑啊跑");13 }14 public void run(Dog dog){15 System.out.println("小狗跑啊跑");16 }17 public void run(Lion lion){18 System.out.println("狮子跑啊跑");19 } 20 //测试21 public static void main(String[] args){22 Animal dog = new Dog();23 Animal lion = new Lion();;24 Test4 test4 = ew Test4();25 test4.run(dog);26 test4.run(lion);27 }28}
运行结果是
动物跑啊跑
动物跑啊跑
相信大家学过重载的都能猜到是这个结果。但是,为什么会选择这个方法进行重载呢?虚拟机是如何选择的呢?
在此之前我们先来了解两个概念。
先来看一行代码:
Animal dog = new Dog();
对于这一行代码,我们把Animal称之为变量dog的静态类型,而后面的Dog称为变量dog的实际类型。
现在我们再来看看虚拟机是根据什么来重载选择哪个方法的。
对于静态类型相同,但实际类型不同的变量,虚拟机在重载的时候是根据参数的静态类型而不是实际类型作为判断选择的。并且静态类型在编译器就是已知的了,这也代表在编译阶段,就已经决定好了选择哪一个重载方法。
由于dog和lion的静态类型都是Animal,所以选择了run(Animal animal)这个方法。
静态分派的典型应用就是方法的重载的,现在应该知道什么是静态分派了吧?
动态分派
和静态分派类似,所谓动态分派就是就是根据方法的实际类型来选择调用哪个方法,而实际类型是需要到达运行期才能知道。像重写就是动态分派的典型应用了。
更多的详情可以看我之前写的一篇文章从jvm角度看懂类初始化、方法重载、重写。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 杭州IT培训杭州上城区php培训杭州上城区java培训 网站详细了解,免费咨询电话:400-998-6158