从变量类型角度分析——重写和重载
来源:互联网 发布:网络上芒果是什么意思 编辑:程序博客网 时间:2024/05/19 16:22
Human man =new Man();
其中Human 是变量man的静态类型,Man是变量man的动态类型
public class Reloading {
static abstract class Human{
}
static class Man extends Human{
}
static class Woman extends Human{
}
public void sayHello(Human guy){
System.out.println("guy");
}
public void sayHello(Man guy){
System.out.println("man");
}
public void sayHello(Woman guy){
System.out.println("woman");
}
public static void main(String[] args) {
Human man = new Man();
Human woman = new Woman();
Reloading rd = new Reloading();
rd.sayHello(man);
rd.sayHello(woman);
//虚拟机重载的时候使用过变量的静态类型,而不是实际类型作为依据的
//实际类型变化
Human man2 = new Man();
// man2 = new Woman();
//静态类型变化
rd.sayHello((Man)man2);
rd.sayHello((Woman)man2);
}
输出:
guy
guy
man
异常
public class ReWrite {
static abstract class Human{
public abstract void sayHello(Human guy);
}
static class Man extends Human{
@Override
public void sayHello(Human guy) {
System.out.println("man");
}
}
static class Woman extends Human{
@Override
public void sayHello(Human guy) {
System.out.println("woman");
}
}
public static void main(String[] args) {
//重写不是根据静态类型的,而是根据动态类型的
Human man = new Man();
Human woman = new Woman();
man.sayHello(null);//这种情况就能传入null
woman.sayHello(null);
man = new Woman();
man.sayHello(null);
}
}
输出:
man
woman
woman
- 从变量类型角度分析——重写和重载
- 从字节码角度分析Byte类型变量b++和++b
- Oracle对象类型——类型继承、重载、重写
- Java——重载和重写
- java基础——重写和重载
- 【C#】——重载和重写、覆盖
- Java重写和重载区别—多态
- Java基础——方法的重载和重写的区别与分析
- 砝码分盐问题——从数学和计算机的角度分析(1)
- 砝码分盐问题——从数学和计算机的角度分析(2)
- 砝码分盐问题——从数学和计算机的角度分析(3)
- 砝码分盐问题——从数学和计算机的角度分析(4)
- 砝码分盐问题——从数学和计算机的角度分析(5)
- 砝码分盐问题——从数学和计算机的角度分析(6)
- 砝码分盐问题——从数学和计算机的角度分析(7)
- 砝码分盐问题——从数学和计算机的角度分析(8)
- 砝码分盐问题——从数学和计算机的角度分析(9)
- 砝码分盐问题——从数学和计算机的角度分析(10)
- 平方根法
- 为什么我们需要nginx
- 文章标题
- 图论学习之二分图(二)二分图匹配的相关概念及定理
- F: Baldheaded stronger
- 从变量类型角度分析——重写和重载
- 40个Java集合面试问题和答案
- 采用QTP11.0对access数据库的连接
- Spring-AOP的代理模式
- dns配置大全,你值得拥有!
- 跨平台移动开发工具:Cordova VS Weex
- 运动员最佳配对问题(回溯)
- 心少朴
- CUBE和ROLLUP函数的用法及区别