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

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

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

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

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

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

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

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

相关·内容

(16) 继承的细节

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

69890

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覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误?

1K00
  • 来一场Java高级的面试,看看自己啥水准

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

    1K10

    10个最难回答的Java面试题

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

    81920

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

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

    1.4K40

    挑战 10 道超难 Java 面试题

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

    73420

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

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

    72931

    挑战 10 道超难 Java 面试题

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

    75310

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

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

    64120

    挑战 10 道超难 Java 面试题

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

    69820

    史上最难10道 Java 面试题!

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

    85230

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

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

    1.8K21

    Java中的三大特性 - 超详细篇

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

    54510

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

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

    1.2K10

    可维护的Python代码库的7条规则

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

    31630

    Java的继承与接口机制

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

    45630

    转-Golang语言Interface漫谈

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

    79750

    Java Challengers#1:JVM中的方法重载

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

    45430

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

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

    1.1K30

    c++类和继承面试点25连问

    运行时多态简单来讲就是:使用基类指针或者引用指向一个派生类对象,在非虚继承的情况下,派生类直接继承基类的虚表指针,然后使用派生类的虚函数去覆盖基类的虚函数,这样派生类对象通过虚表指针访问到的虚函数就是派生类的虚函数了...类成员函数的重载、覆盖和隐藏的区别 重载即为函数重载,重载的特征: 相同的范围,也就是在同一个类中; 函数名字相同; 函数参数不同; virtual关键字无影响。...以上三种情况都必须使用初始化列表而不能在构造函数中进行赋值。 10. 什么情况下要使用虚继承? 多重继承时需要使用虚继承,一般的我们在多重继承时使用虚继承来防止二义性问题。...如果使用了空指针,就会发生段错误,那这里肯定也会发生段错误,但实际上编译执行后并没有产生错误,print函数被正确执行了,这就很尴尬了,这是为什么呢?...这个,并且此时因为print函数没有使用类CPeople的任何成员,它当然可以正常的执行。

    99410
    领券