首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在没有继承的情况下,可以从不同的类进行方法重载吗?许多消息来源都声称没有。但我没有得到任何错误。为什么会这样呢?

在没有继承的情况下,是不可以从不同的类进行方法重载的。方法重载是指在同一个类中,可以定义多个方法名相同但参数列表不同的方法。当调用该方法时,编译器会根据传入的参数类型和数量来确定调用哪个方法。

在没有继承的情况下,我们无法直接访问其他类中的方法。如果尝试在一个类中定义与其他类中的方法相同的方法,编译器会将其视为该类中的一个独立方法,而不是方法重载。因此,即使方法名和参数列表相同,也不会出现编译错误。

这种情况下,如果没有得到任何错误,可能有以下几种可能性:

  1. 没有调用该方法:在代码中没有对该方法进行调用,因此没有出现错误。
  2. 方法被隐藏:在同一个类中定义了与其他类中方法相同的方法,但是没有进行调用。这种情况下,编译器会隐藏其他类中的方法,只会调用当前类中的方法。
  3. 方法名和参数列表相同,但是方法体不同:虽然方法名和参数列表相同,但是方法体的实现不同,因此编译器不会将其视为方法重载,而是将其视为不同的方法。

综上所述,在没有继承的情况下,是不可以从不同的类进行方法重载的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

(16) 继承细节

这个时候,它任何子类都必须在构造方法中通过super(...)调用Base带参数构造方法,如下所示,否则,Java提示编译错误。...对于private变量和方法,它们只能在内被访问,访问也永远是当前,即在子类中,访问是子类中,访问,它们只是碰巧名字一样而已,没有任何关系。...实例变量、静态变量、静态方法、private方法,都是静态绑定重载和重写 重载是指方法名称相同但参数签名不同(参数个数或类型或顺序不同),重写是指子类重写父相同参数签名方法。...可以看出,当有多个重名函数时候,决定要调用哪个函数过程中,首先是按照参数类型进行匹配,换句话说,寻找在所有重载版本中最匹配,然后才看变量动态类型,进行动态绑定。...(){ } } 为什么这样规定

66290

90%Java程序员不会10道Java面试题

先来看看这10道Java面试题你几道? 1.为什么等待和通知是 Object 而不是 Thread 中声明? 2.为什么Java中不支持多重继承? 3.为什么Java不支持运算符重载?...此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3.为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

98800

来一场Java高级面试,看看自己啥水准

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3. 为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

1K10

挑战10个最难回答Java面试题(附答案)

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。...2)避免编程错误。 Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

1.4K40

Java 大牛看过来,挑战10道超难 Java 面试题!

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3.为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

69531

挑战 10 道超难 Java 面试题

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3.为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

71020

10个最难回答Java面试题

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3.为什么Java不支持运算符重载?...2) 避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

77620

听说这10道Java面试题90%的人都不会!!!

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3.为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

62020

挑战 10 道超难 Java 面试题

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3.为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

71510

史上最难10道 Java 面试题!

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3、为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10、你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

82430

挑战 10 道超难 Java 面试题

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3.为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10.你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

66220

10 大 Java面试难题,打趴无数面试者!

此外,Java 可以通过使用接口支持单继承来避免这种歧义。由于接口只有方法声明而且没有提供任何实现,因此只有一个特定方法实现,因此不会有任何歧义。 3. 为什么Java不支持运算符重载?...2)避免编程错误。Java 不允许用户定义运算符重载,因为如果允许程序员进行运算符重载,将为同一运算符赋予多种含义,这将使任何开发人员学习曲线变得陡峭,事情变得更加混乱。...虽然这可以有很多答案, 但我版本是首先我会看看代码, 如果我看到一个嵌套同步块,或从一个同步方法调用其他同步方法, 或试图不同对象上获取锁, 如果开发人员不是非常小心,就很容易造成死锁。...需要注意重要一点是要声明这些方法为私有方法, 以避免被继承、重写或重载。由于只有 Java 虚拟机可以调用私有方法, 你完整性会得到保留, 并且 Java 序列化将正常工作。...2) Javac 中 wait 和 notify 方法之间任何潜在竞争条件。 10. 你能用Java覆盖静态方法?如果我子类中创建相同方法是编译时错误

1.7K21

Java中三大特性 - 超详细篇

,它没有方法体,即方法实现代码为空,比如abstract public void fun(); 抽象方法一般子类中进行实现,它就好像是在说:我不写代码,我只是声明一个方法名,剩下交给我子孙后代(继承...(也可以叫做重写,不过这样重载有点混淆,所以个人喜欢叫做覆写) 他们之间区别如下 重载 覆写 访问权限 可以不同 可以不同(但是子类可见性不能比父低) 方法返回值 可以不同 相同 参数类型...:如果一个没有指定父(即没有继承任何),那么这个默认继承Object 为什么要用继承?...因为这样可以提高效率(细节:CPU处理方法调用指令时,使用分支转移扰乱预取指令策略,这个比较底层,这里先简单介绍,后面章节再深入) 那它有没有什么缺点?...有,如果一个方法内容过长,又误被当做内联处理,那么就会影响性能 比如你代码多个地方调用这个方法,那么你代码就会膨胀变得很大,从而影响性能 那有没有办法可以解决

45910

Java 中三大特性(超详细篇)

,它没有方法体,即方法实现代码为空,比如abstract public void fun(); 抽象方法一般子类中进行实现,它就好像是在说:我不写代码,我只是声明一个方法名,剩下交给我子孙后代(继承...(也可以叫做重写,不过这样重载有点混淆,所以个人喜欢叫做覆写) 他们之间区别如下 重载 覆写 访问权限 可以不同 可以不同(但是子类可见性不能比父低) 方法返回值 可以不同 相同 参数类型...:如果一个没有指定父(即没有继承任何),那么这个默认继承Object 为什么要用继承?...因为这样可以提高效率(细节:CPU处理方法调用指令时,使用分支转移扰乱预取指令策略,这个比较底层,这里先简单介绍,后面章节再深入) 那它有没有什么缺点?...有,如果一个方法内容过长,又误被当做内联处理,那么就会影响性能 比如你代码多个地方调用这个方法,那么你代码就会膨胀变得很大,从而影响性能 那有没有办法可以解决

32410

可维护Python代码库7条规则

通常情况下可以使用*args和**kwargs来解决这个问题。 该示例甚至没有涉及多重继承问题,多重继承中,你必须搜索多个父以了解实现细节,或者不同中可能存在相同方法不同冲突实现。...继承主要缺点是紧密耦合,所有子类都被同一个基绑在一起。这就使得改变基并非易事。反之,基可能对某些子类限制过多,久而久之,就会产生像上例这样问题。 那么为什么要做继承?...另一方面,对于组成,如果子类不继承自基,我们如何表示它们之间相似性无类型 Python 中,不需要做任何事情,因为可以传递任何对象到任何地方。...然而或许可以面向继承范例中移除大多数子类,并将它们浓缩为单个;然后通过将每个实例引用到其他对象来实现自定义行为。这就自然而然地引出了单一责任原则[15]。 继承是罪过?...然而,避免继承违背了许多 Python 程序员本能,这就是为什么许多抵制这条规则。无论你做什么,你都应该遵守 Liskov 替换原则。

23630

Java继承与接口机制

然而无论是现实世界中还是代码世界中,确实存在一个对象(Object)既是A又是B,且A和B没有父子关系情况. 如果只有单继承继承体系,那么遇到这种情况时会令人感觉束手无策....以上例子中,我们可以看出,一个面向对象语言中,让一个有多个类型(type)机制是必要....如果考虑到这一点的话,将继承机制设计为多继承是顺理成章第一反应,例如C++就是这样设计. 那么为什么Java要设计为单继承+接口机制模式?...网上许多博客文章介绍Java继承机制时,总是用现实世界中人也只有一个父亲来做比喻. 事实上,这样比喻不但没有增加理解用处,反而产生了严重误导....不与任何接口或者类同级,默认为单独最上级. (3)继承树由下往上进行匹配,如果当前调用方法传参最高优先级中有平级多个方法存在,提示编译错误.

23530

转-Golang语言Interface漫谈

还是说问题被抽象了,遮盖了或者说学者除了要学习不同类型之外还有多学一层不同层次知识了?是简化了还是更复杂更难琢磨了?相信读者明辨。 Go面向对象不支持重载也只有有限继承。...例如,要实现两个不同类型形状面积加运算,面向对象语言里,就需要定义一个基,让这个鸡肋(谐音)有个方法可以相加,再让每个形状去继承,才可以让编译器知道这些形状类型所继承那个不是任何具体形状形状声明了没有任何具体操作取得面积运算...还是说问题被抽象了,遮盖了或者说学者除了要学习不同类型之外还有多学一层不同层次知识了?是简化了还是更复杂更难琢磨了?相信读者明辨。 Go面向对象不支持重载也只有有限继承。...例如,要实现两个不同类型形状面积加运算,面向对象语言里,就需要定义一个基,让这个鸡肋(谐音)有个方法可以相加,再让每个形状去继承,才可以让编译器知道这些形状类型所继承那个不是任何具体形状形状声明了没有任何具体操作取得面积运算...例如,要实现两个不同类型形状面积加运算,面向对象语言里,就需要定义一个基,让这个鸡肋(谐音)有个方法可以相加,再让每个形状去继承,才可以让编译器知道这些形状类型所继承那个不是任何具体形状形状声明了没有任何具体操作取得面积运算

75650

Java Challengers#1:JVM中方法重载

什么是方法重载方法重载是一种编程技术,允许开发人员同一个中多次使用相同方法名,但具有不同参数。在这种情况下,我们说该方法重载。...重载使你代码更清晰,更易于阅读,它还可以帮助你避免程序中错误。...用于可变数量参数,可变参数基本上是由三个点指定值数组(...)我们可以传递许多int我们想要给这个方法数字。...(请记住,Java中每个继承了Object。)在这种情况下,JVM选择将Double类型宽化为一个Object,因为它比取消装箱所需工作量少,正如我之前所解释那样。...这样可以使代码保持清洁,易于阅读,并降低了重复方法破坏系统某些部分风险。

42330

2020Java面试宝典 -- JavaSE基础篇

一 Java 常用名词释义 1、面向对象都有哪些特性以及你对这些特性理解(经典题,答出色加分,答不出来很减分哦) 1)继承继承已有得到继承信息创建新过程。...重载对返回类型没有特殊要求。 方法重载规则: 1.方法名一致,参数列表中参数顺序,类型,个数不同。 2.重载方法返回值无关,存在于父和子类,同类中。...所以假如我们像下面这样调用方法: f(); Java 怎样判断 f()具体调用方式?而且别人如何识别并理解代码?由于存在这一问题,所以不能。...例如:String input = …;input.equals(“quit”), 许多人稍不注意就使用==进行比较了,这是错误。 记住,字符串比较基本上都是使用equals方法。...this==o; } 这说明,如果一个没有自己定义equals方法, 它默认equals方法Object 继承)就是使用==操作符, 也是比较两个变量指向对象是否是同一对象, 这时候使用

90630

java面向对象相关知识

当新对象被创建时候,构造函数会被调用。每一个都有构造函数。程序员没有提供构造函数情况下,Java编译器会为这个创建一个默认构造函数。 Java中构造函数重载方法重载很相似。...重载对返回类型没有特殊要求。 两个对象值相同(x.equals(y) == true),但却可有不同hash code,该说法是否正确,为什么?...当外部类继承时候,内部类是不会被覆盖,它们是完全独立实体,每个都在自己命名空间内,如果内部类中明确地继承,就可以覆盖原来内部类方法。...如果下一级try语句没有对某种”异常”进行处理,堆栈就会展开,直到遇到有处理这种”异常”try语句。 Java接口和C++相同和不同处。...由于Java不支持多继承,而有可能某个或对象要使用分别在几个或对象里面的方法或属性,现有的单继承机制就不能满足要求。 与继承相比,接口有更高灵活性,因为接口中没有任何实现代码。

55210
领券