导航:首页 > 源码编译 > 重载发生在编译时

重载发生在编译时

发布时间:2025-05-04 01:13:42

java中重载和重写的区别是什么

在Java编程中,两个关键的特性用于扩展和增强类的功能:重载和重写。让我们分别探讨它们的区别。

首先,重载(Overloading)是类内部的一种机制,它允许在同一个类中定义多个同名的方法,但这些方法的参数列表必须不同。这意味着参数的数量、类型或顺序的任何变化都可以导致方法的重载。即使返回类型或访问修饰符有所差异,这也是在编译时进行检查的。重载主要用于提供多种实现方式,根据传入的参数类型或数量选择合适的方法执行。

相比之下,重写(Overriding)则发生在子类继承父类的上下文中。当子类拥有与父类相同名称、参数列表且返回类型(或其子类型)更严格的(即不能更宽泛)方法时,就发生了重写。此外,子类不能抛出比父类方法更大范围的异常,访问权限至少要与父类方法相等,如果父类方法是私有(private),子类则无法覆盖它。重写的主要目的是为了实现多态,让子类能够以自己的方式实现父类的方法,增强代码的灵活性和可扩展性。

② 重载和重写有什么区别

重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。

重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。


③ C++多态性。 基类的虚函数和重载函数的区别,是不是一个是在运行时发生,一个是在编译时发生

是的,函数的重载是在编译的时候发生,而虚函数是在运行的时候确定。其实有时候称函数的重载为静态多态性,而虚函数为动态多态性

④ Java编译时注解和运行时注解有什么区别

重写,重载,泛型,分别是在运行时还是编译时执行的

1. 方法重载是在编译时执行的,因为,在编译的时候,如果调用了一个重载的方法,那么编译时必须确定他调用的方法是哪个。如:

当调用evaluate("hello")时候,我们在编译时就可以确定他调用的method #1.

2.
方法的重写是在运行时进行的。这个也常被称为运行时多态的体现。编译器是没有办法知道它调用的到底是那个方法,相反的,只有在jvm执行过程中,才知晓到底是父子类中的哪个方法被调用了当有如下一个接口的时候,我们是无法确定到底是调用父类还是子类的方法

3.
泛型(类型检测),这个发生在编译时。编译器会在编译时对泛型类型进行检测,并吧他重写成实际的对象类型(非泛型代码),这样就可以被JVM执行了。这个过程被称为"类型擦除"。

类型擦除的关键在于从泛型类型中清除类型参数的相关信息,并且再必要的时候添加类型检查和类型转换的方法。

类型擦除可以简单的理解为将泛型java代码转换为普通java代码,只不过编译器更直接点,将泛型java代码直接转换成普通java字节码。类型擦除的主要过程如下:

1). 将所有的泛型参数用其最左边界(最顶级的父类型)类型替换。

2). 移除所有的类型参数。

在编译后变成:

4. 注解。注解即有可能是运行时也有可能是编译时。

如java中的@Override注解就是典型的编译时注解,他会在编译时会检查一些简单的如拼写的错误(与父类方法不相同)等

同样的@Test注解是junit框架的注解,他是一个运行时注解,他可以在运行时动态的配置相关信息如timeout等。

5. 异常。异常即有可能是运行时异常,也有可能是编译时异常。

RuntimeException是一个用于指示编译器不需要检查的异常。RuntimeException
是在jvm运行过程中抛出异常的父类。对于运行时异常是不需要再方法中显示的捕获或者处理的。

已检查的异常是被编译器在编译时候已经检查过的异常,这些异常需要在try/catch块中处理的异常。

6. AOP. Aspects能够在编译时,预编译时以及运行时使用。

1).
编译时:当你拥有源码的时候,AOP编译器(AspectJ编译器)能够编译源码并生成编织后的class。这些编织进入的额外功能是在编译时放进去的。

2). 预编译时:织入过程有时候也叫二进制织入,它是用来织入到哪些已经存在的class文件或者jar中的。

3). 运行时:当被织入的对象已经被加载如jvm中后,可以动态的织入到这些类中一些信息。

7. 继承:继承是编译时执行的,它是静态的。这个过程编译后就已经确定

8. 代理(delegate):也称动态代理,是在运行时执行。

阅读全文

与重载发生在编译时相关的资料

热点内容
什么是文件夹怎么新建文件夹 浏览:879
红色警戒怎么连接服务器 浏览:17
历史直播在哪个app 浏览:744
ip地址迁移云服务器上 浏览:602
10元一年云服务器 浏览:300
编译执行程序是什么意思 浏览:774
grid安卓怎么注册 浏览:996
破解版怎样复制原文件夹 浏览:509
html5开发编程 浏览:336
1m的云服务器够用吗 浏览:268
一般公共预算收入2015预算法 浏览:794
如何把虚拟机变为服务器 浏览:371
程序员越老越香 浏览:399
哑铃健身pdf 浏览:30
追剧的程序员那么可爱 浏览:504
nfc手机模拟全加密卡 浏览:407
oracle启动命令linux 浏览:882
程序员瑞士军盾包 浏览:479
程序员p5是校招水平吗 浏览:597
域名与ip地址通过什么服务器相互转换的 浏览:476