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

超类不会调用重写方法吗?

在面向对象编程中,子类通常会继承父类的方法和属性。然而,在某些情况下,子类可能需要重写父类的方法以实现不同的功能。这种情况下,子类会覆盖或重写父类的方法。

在Java等面向对象编程语言中,子类可以通过使用@Override注解来声明子类方法将覆盖父类方法。这样,编译器会检查父类是否存在相应的方法,如果没有,则会报错。这有助于避免因方法名拼写错误或方法签名不匹配而导致的问题。

例如,在Java中,子类可以这样重写父类的方法:

代码语言:java
复制
public class Parent {
    public void method() {
        System.out.println("Parent method");
    }
}

public class Child extends Parent {
    @Override
    public void method() {
        System.out.println("Child method");
    }
}

在这个例子中,子类Child重写了父类Parentmethod()方法。当调用Child类的method()方法时,将会输出"Child method",而不是"Parent method"。

需要注意的是,并非所有的编程语言都支持方法重写。例如,Python等动态类型语言中,方法的重写需要通过其他方式实现,例如使用super()函数等。

总之,子类可以重写父类的方法,以实现不同的功能。在某些编程语言中,可以使用@Override等注解来声明子类方法将覆盖父类方法。

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

相关·内容

静态方法可以重写

但是重写之后会发生什么,是否调用子类静态方法会执行子类的逻辑,这才是坑所在的地方。 重写 回顾一下Override的定义,重写是对父允许访问的方法的实现逻辑进行重新编写。...虽然原则上不允许重写静态方法,但是, 编译器是不会报错的 那么重写之后会发生什么呢?...这也就证明了,静态方法是在编译时使用了编译信息,进行静态绑定的。它和对象无关,而和有关。 总结 对于静态方法,我们不应该尝试去重写,而且调用时应该以进行调用,而不是对象进行调用。...重写,说的是根据运行时的对象类型来决定调用哪个方法,而不是编译时类型。静态方法是属于方法,在编译阶段就确定了。因此即使重写了也没意义。...我们经常会用父来声明一个对象,而对象是在运行时才确定的,这就是运行时重写的意义所在。而对于静态方法调用,虽然Java允许通过对象来调用,但只是为了开发方便,正确的姿势是通过调用

1.5K20
  • python之类的重写方法调用方法

    下面我们来介绍一下python的重写方法调用方法。...---- 二、重写方法调用方法   在继承关系中,子类会自动继承父中定义的方法,但如果父中的方法功能不能满足需求,就可以在子类中重写方法。...1、重写方法示例 #定义一个父 class Person: def speak(self): #定义方法用于输出 print ('我是一个人类') #定义一个子类...2.子类调用方法   如果需要在子类中调用方法,可以使用内置函数super()或通过“父名.方法名()”的方式来实现。 例:子类调用方法示例。...---- 三、参考 1、廖雪峰的官网 2、python官网 3、Python编程案例教程 ---- 四、总结   以上就是就是关于Python重写方法调用方法相关知识,可以参考一下,觉得不错的话

    2.7K30

    关于使用MethodHandle在子类中调用祖父重写方法的探究

    关于使用MethodHandle在子类中调用祖父重写方法的探究 注:这个例子原本出现在周志明先生的《深入理解Java虚拟机》--虚拟机字节码执行引擎章节,介于有读者朋友有疑问,这里基于Java代码层面解释一下...关于这段代码,可以简单的理解findSpecial方法是为了找到方法,invoke是为了调用方法。...在普通的方法调用中,这个this参数是虚拟机自动处理的,表示的是当前实例对象,我们在方法中可以直接使用。...基于这个事实,我们这时可以直接在GrandFather的thinking方法调用Son独有的方法,使用反射或者直接类型强制转换为Son就行了。...这个参数中指定的是方法接收者的类型,bindTo指定的接收者的类型必须要是这个或子类,不然会出现ClassCastException异常。

    9.5K30

    JVM执行方法调用(一)- 重载与重写

    回顾Java语言中的重载与重写,并且看看JVM是怎么处理它们的。 重载Overload 定义: 在同一个中有多个方法,它们的名字相同,但是参数类型不同。...或者,父子类中,子类有一个方法与父非私有方法名字相同,但是参数类型不同。那么子类的这个方法对父方法构成重载。 JVM是怎么处理重载的?其实是编译阶段编译器就已经决定好调用哪一个重载方法。...重写Override Java语言中的定义: 子类方法有一个方法与父方法的名字相同且参数类型相同。 父方法的返回值可以替换掉子类方法的返回值。...也就是说父方法的返回值类型: 要么和子类方法返回值类型一样。 要么是子类方法返回值类型的父。 两者都是非私有、非静态方法。...但是JVM中对于重写的定义则有点不同: 子类方法的名字与方法描述符与父方法相同。 两者都是非私有、非静态方法。 (更多详细信息可参考JVM Spec - 5.4.5.

    46910

    Python的继承和方法重写总结

    Python的继承和方法重写总结 我们都知道可以继承,通过继承可以实现代码的复用,使代码看起来更加简洁 比如: Class B(A): Pass 定义了一个名为B的,它继承于A,我们把B叫做A的子类...方法重写 当子类定义了一个和相同名字的方法时,那么子类的这个方法将覆盖相同的方法(或称为重写) 先借用两个例子: >>> class Bird: ...     ...为了达到预期的效果,SongBird的构造方法必须调用的构造方法来确保进行基本的初始化。有两种方法能达到这个目的:调用的构造方法的未绑定版本,或者使用super函数。...调用的构造方法的未绑定版本 >>> class SongBird(Bird): ...     def __init__(self): ...         Bird....当前和对象可以作为super函数的参数使用,调用函数返回的对象的任何方法都是调用方法,而不是当前方法

    2.9K10

    创建子类对象时,父构造函数中调用被子类重写方法为什么调用的是子类的方法

    void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象的时候父调用子类方法...但是:创建B对象父调用方法? 答案: 当子类被加载到内存方法区后,会继续加载父到内存中。...如果,子类重写了父方法,子类的方法引用会指向子类的方法,否则子类的方法引用会指向父方法引用。 如果子类重载了父方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父方法,则方法引用会指向父方法。 当子类对象创建时,会先行调用的构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译的时候,父构造方法调用方法的参数已经强制转换为符合父方法的参数了。 上边代码在编译前已经转换为下面这个样子的了。

    6.2K10

    怎么用super调用构造函数?

    这些重复的代码在它的中已经存在,这样做效率很低,而且,这意味着子类必须被同意具有访问这些成员的权力。然而,有时你希望创建一个,该可以保持它自己实现的细节(也就是说,它保持私有的数据成员)。...任何时候一个子类需要引用它直接的,它可以用关键字super来实现。super有两种通用形式。第一种调用的构造函数。第二种用来访问被子类的成员隐藏的成员。...使用super调用构造函数 子类可以调用中定义的构造函数方法,用super的下面形式:java复制代码super(parameter-list); 这里,parameter-list定义了中构造函数所用到的所有参数...既然构造函数可以被重载,可以用定义的任何形式调用super( ),执行的构造函数将是与所传参数相匹配的那一个。...当一个子类调用super( ),它调用它的直接的构造函数。这样,super( )总是引用调用直接的。这甚至在多层次结构中也是成立的。

    13010

    Java | 、实例初始化 、方法重写规则

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 、实例初始化 、方法重写规则...()方法由非静态实例变量显示赋值代码和非静态代码块代码从上到下顺序执行,对应构造器的代码最后执行。 每次创建实例对象,调用对应构造器,执行的就是对应的()方法。...(先执行父的()方法方法重写Override: ①不可以被重写方法: final方法 静态方法 private等子类中不可见的方法 ②对象的多态性: 子类如果重写了父方法...,通过子类调用的一定是子类重写过的方法。...非静态方法默认的调用对象时this。 this对象在构造器或者说()方法中表示正在创建的对象。

    16620

    【Python】面向对象 - 继承 ② ( 子类重写成员 | 子类调用重名成员 | 子类中使用 父调用成员 | 子类中使用 super 调用成员 )

    一、子类重写成员 1、子类重写成员语法 子类 继承 父的 成员属性 与 成员方法 后 , 如果对 继承的 父成员 不满意 , 可以 重写成员 ; 成员 属性 和 成员 方法 , 都可以进行重写...; 成员属性 重写 , 就是在 子类中 , 修改 成员属性的值 ; 成员方法 重写 , 就是在 子类中 , 修改 成员方法方法体内容 ; 在子类中 , 如果需要重写的成员 , 直接在子类中 ,...1、子类调用重名成员语法 在 外部 是无法访问 父成员 : 子类 重写 成员后 , 通过 子类 实例对象 调用重写后的 成员时 , 默认调用的就是 重写后的成员 ; 在 子类内部 可以...访问父成员 : 如果需要调用重写之前的 父成员 , 则需要使用如下方法 : 方法一 : 使用 父调用成员 ; 调用父类同名成员变量 : 父名.成员变量名 调用父类同名成员方法...: 父名.成员方法名(self) 方法二 : 使用 super 调用成员 ; 调用父类同名成员变量 : super().成员变量名 调用父类同名成员方法 : super().成员方法名(

    60630

    ES6 子类对父方法重写

    子类对父方法重写的概念子类对父方法重写是指在子类中定义与父类同名的方法,并使用子类的实现来替换父方法。当子类调用方法时,将执行子类的实现而不是父的实现。...这允许子类根据自身的需求来修改或扩展父的行为。语法ES6中子类对父方法重写的语法非常简单。在子类中,定义与父类同名的方法,并提供子类自己的实现。当子类调用方法时,将执行子类的实现。...当我们创建ChildClass的实例并调用methodName()时,将执行子类的方法实现。示例让我们通过示例来理解子类对父方法重写。...然后,我们定义了一个Circle,它继承自Shape,并重写了calculateArea()方法。...当我们创建Circle的实例并调用calculateArea()方法时,将执行子类Circle的方法实现,输出圆的面积。通过重写方法,子类可以根据自身的需求来修改或扩展父的行为。

    61240

    JAVA父的静态方法能否被子类重写

    静态:   在编译时所分配的内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间,在实例化之前这个方法就已经存在于内存,跟的对象没什么关系。...子类中如果定义了相同名称的静态方法,并不会重写,而应该是在内存中又分配了一块给子类的静态方法,没有重写这一说,只是单纯的名字重复了。...父代码 1 public class Fu { 2 public static void show() { 3 System.out.println("父的静态方法"); 4..."); } } 输出结果是: 父的静态方法 子类的一般方法   当父引用指向子类对象,只会调用的静态方法,此行为并不具有多态性!...只能说明子类能继承父的静态方法!静态方法与对象无关!

    2.3K30

    python开发中重写方法有哪些?

    使用面向对象继承开发时经常会遇到的一种情况,重写。继承:子类拥有父的所有属性和方法。子类继承自父,乐意直接享受父中已经封装好的方法,不需要再次开发。...重写方法有2种情况:1. 覆盖父方法2....具体的实现方式:就相当于在子类中定义了一个和父类同名的方法并且实现,重写之后,在运行时,只会调用子类中重写方法,而不再会调用封装的方法。...# 在使用子类对象调用方法时,会调用子类中重写方法xtq.bark()执行结果:注意:如果在XiaoTianQuan中没有重新编写bark方法,那么执行结果是汪汪叫,因为此时调用的依旧是父中的bark...最常使用的场景就是,在重写方法时,让super().调用在父中封装的方法实现代码体验:功能需求:不仅要会汪汪叫,还要会天籁之音。

    2.5K20
    领券