我是靠谱客的博主 神勇蜡烛,这篇文章主要介绍Java中的多态方法,现在分享给大家,希望可以做个参考。

转载自这篇文章

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
public class Main { public void test(Object o) { System.out.println("Object"); } public void test(String s) { System.out.println("String"); } public static void main(String[] args) { Main that = new Main(); that.test(null); } }

这段代码运行的结果是

复制代码
1
2
3
4
J:test>java Main String J:test>

因为Java处理null时会优先处理更确切的对象

如果此时还有一个多态方法是ArrayList,程序会报错(编译阶段),因为不知道去适配String还是ArrayList

复制代码
复制代码
1
2
3
4
5
6
J:test>javac Main.java Main.java:14: error: reference to test is ambiguous that.test(null); ^ both method test(String) in Main and method test(ArrayList) in Main match 1 error
复制代码

如果是基础数据类型和对象类型,则会适配对象类型

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
J:test>type Main.java import java.util.ArrayList; public class Main { public void test(Object o) { System.out.println("Object"); } public void test(String s) { System.out.println("String"); } // public void test(ArrayList a){ // System.out.println("ArrayList"); // } public void test(int i){ System.out.println("int"); } public static void main(String[] args) { Main that = new Main(); that.test(null); } } J:test>javac Main.java J:test>java Main String J:test>

如果只有基础数据类型和Object,因为Object是对象,则调用Object

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
J:test>type Main.java import java.util.ArrayList; public class Main { public void test(Object o) { System.out.println("Object"); } // public void test(String s) { // System.out.println("String"); // } // public void test(ArrayList a){ // System.out.println("ArrayList"); // } public void test(int i){ System.out.println("int"); } public static void main(String[] args) { Main that = new Main(); that.test(null); } } J:test>javac Main.java J:test>java Main Object J:test>

如果只有基础数据类型,则编译报错,因为java不支持int与null转换

复制代码
复制代码
1
2
3
4
5
6
7
8
J:test>javac Main.java Main.java:17: error: incompatible types: <null> cannot be converted to int that.test(null); ^ Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output 1 error J:test>

最后

以上就是神勇蜡烛最近收集整理的关于Java中的多态方法的全部内容,更多相关Java中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部