博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Java继承,重载及运行的顺序的总结
阅读量:2145 次
发布时间:2019-04-30

本文共 1085 字,大约阅读时间需要 3 分钟。

目标类A:

public class A {	static {		System.out.println("A=====static");	}	{		System.out.println("A====代码块");	}	public void get(int a , long b) {				System.out.println(a+"====="+b);	}}

目标类B继承A:

public class B extends A {		static {		System.out.println("B+++++static");	}	{		System.out.println("B++++代码块");	}		@Override	public void get(int a, long b) {		// TODO Auto-generated method stub		super.get(a, b);	}		public void get(long b , long a) {		System.out.println(a+"@@@@@@"+b);	}	public void get(long b , int a) {		System.out.println(a+"+++++++++++"+b);	}	public void get(int a, int b) {		System.out.println(a+">>>>>>>>>>>"+b);	}}

测试类:

public class ExtendsTest {		@Test		public void test() {			B b= new B();			b.get(2, 5);		}}
public class ExtendsTest {		@Test		public void test() {			B b= new B();			b.get(2, 5L);//5修改为了long型		}}

运行结果:

A=====staticB+++++staticA====代码块B++++代码块2>>>>>>>>>>>5
A=====staticB+++++staticA====代码块B++++代码块2=====5

从上面的运行结果可以看出来:程序运行首先会执行父类A的静态代码块,其次运行子类B的静态代码块,在到父类的代码块、子类的代码块,最后才是函数的调用;当有多个重名函数时,在决定要调用哪一个函数的过程中,首先是按照参数类型来匹配的,也就是说寻找所有重载版本中最匹配的,然后才看变量的动态类型,进行动态绑定。

转载地址:http://jwegf.baihongyu.com/

你可能感兴趣的文章
linux基本命令
查看>>
BlockQueue 生产消费 不需要判断阻塞唤醒条件
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
win10将IE11兼容ie10
查看>>
checkbox设置字体颜色
查看>>
第一篇 HelloWorld.java重新学起
查看>>
ORACLE表空间扩张
查看>>
orcal 循环执行sql
查看>>
web.xml配置监听器,加载数据库信息配置文件ServletContextListener
查看>>
结构型模式之桥接模式(Bridge)
查看>>
行为型模式之状态模式(State)
查看>>
行为型模式之策略模式(Strategy)
查看>>
行为型模式之模板方法模式(TemplateMethod)
查看>>
行为型模式之访问者模式(Visitor)
查看>>
大小端详解
查看>>
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>