Java中的多态方法
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);
}
}
这段代码运行的结果是
J:\test>java Main
String J:\test>
因为Java处理null时会优先处理更确切的对象
如果此时还有一个多态方法是ArrayList,程序会报错(编译阶段),因为不知道去适配String还是ArrayList
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
如果是基础数据类型和对象类型,则会适配对象类型
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
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转换
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中的多态方法的更多相关文章
- 13、java中的多态
1,多态的体现 父类的引用指向了自己的子类对象. 父类的引用也可以接收自己的子类对象.2,多态的前提 必须是类与类之间有关系.要么继承,要么实现. 通常还有一个前提:存在覆盖. 3,多态的好处 多态的 ...
- java中实现多态的机制是什么?
多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...
- 深入理解Java中的多态
一.什么是多态? 多态指同一个实体同时具有多种形式.它是面向对象程序设计(OOP)的一个重要特征.如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的. 二.多态是如何实现的? ...
- 通过实例聊聊Java中的多态
Java中的多态允许父类指针指向子类实例.如:Father obj=new Child(); 那么不禁要发问?? 使用这个父类型的指针访问类的属性或方法时,如果父类和子类都有这个名称的属性或方法,哪 ...
- Java中实现多态的条件是什么
java中实现多态需要三个条件: 1,需要有继承关系的存在. 2,需要有方法的重写. 3,需要有父类的引用指向子类对象.
- 深度分析:理解Java中的多态机制,一篇直接帮你掌握!
Java中的多态 1 多态是什么 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.用白话来说,就是多个对象调用同一 ...
- 浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...
- 千万不要误用 java 中的 HashCode 方法
刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数m ...
- Java中的toString()方法
Java中的toString()方法 目录 Java中的toString()方法 1. 对象的toString方法 2. 基本类型的toString方法 3. 数组的toString ...
随机推荐
- 基于七牛Python SDK写的一个同步脚本
需求背景 最近刚搭了个markdown静态博客,想把博客的图片放到云存储中. 经过调研觉得七牛可以满足我个人的需求,就选它了. 博客要引用图片就要先将图片上传到云上. 虽然七牛网站后台可以上传文件,但 ...
- FireDAC 接占线导致另一个 hstmt DataSnap
[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt 同样的程序,在2台win10 正常,1台win10 报连 ...
- 无法访问win8默认共享(如C$)解决办法
可以使用此过程允许作为本地 Administrators 组的成员并使用密码身份验证登录的用户在会话过程中使用其管理权限.启动注册表编辑器.单击“开始”,在“开始搜索”框中键入 regedit,然后按 ...
- 配置git 环境变量
1.从Git官网下载windows版本的git:http://git-scm.com/downloads 2.一般使用默认设置即可:一路next,git安装完毕! 3.但是如果这时你打开windows ...
- effective javascript 学习心得
第2条:理解JavaScript的浮点数 1.js数字只有一种类型 2.见代码 /** * Created by Administrator on 2017/7/2. */ console.log(& ...
- Etcd的基本使用
etcd 是 CoreOS 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于 Go 语言实现,内部采用 raft 协议作为一致性算法. ...
- [iOS]UIScrollView嵌套UITableView,超出屏幕的cell点击不了问题
最初我是用UIScrollView嵌套了一个UIView,然后UIView里面嵌套UITableView,这样cell 就会超出屏幕那一部分点击不了. 解决方法如下,UITableView拖出来,作为 ...
- OpenGL位图函数
[OpenGL位图函数] 1.OpenGL中glBitmap用于绘制一个二值阵列. When drawn, the bitmap is positioned relative to the curre ...
- 小程序动态生成二维码,生成image图片
前端: <image src="{{img_usrl}}" style="width:100%;height:104px;" bindlongtap=&q ...
- iOS设备尺寸