美文网首页程序员
java继承之方法覆盖

java继承之方法覆盖

作者: 是归人不是过客 | 来源:发表于2020-08-28 12:52 被阅读0次

总结:

1、什么时候要进行重写?

如果父类的方法已经无法满足当前子类的方法,需要将父类的方法重新写一边

2、子类如果重写父类中的方法之后,子类一定调用重写后的方法

3、发生方法覆盖的条件:

第一:发生在具有继承关系的两个类之间(重载是一个类中哦!)

第二:必须具有相同的方法名,相同的返回值类型、相同的参数列表

第三:重写的方法不能比被重写的方法拥有更低的访问权限。(可以更高)

第四:重写的方法不能比被重写的方法抛出更宽泛的异常。

第五、私有的方法不能被覆盖

第六:构造方法无法被覆盖(因为构造方法无法被继承)

第七:静态的方法不存在覆盖

第八:覆盖指的是成员方法,和成员变量无关

4、继承最基本的作用:代码重用
---- 继承最重要的作用:方法重写

简单举个栗子:

public class p{
    public static void main(String [] args) {
        Cat c = new Cat();
        c.move();
    }
}
class Animal{
    public void move() {
        System.out.println("move");
    }
}
class Cat extends Animal{
    
    // Cat 应该在 move中输出猫步
//  所以要在Animal类中的move方法中进行重定义,覆盖
    public void move() {
        System.out.println("kitty move");
    }
//  void move() {   
//      System.out.println("kitty move"); //Cannot reduce the visibility of the inherited method from Animal
//  }
}

输出:kitty move

再举个栗子:

私有方法无法被覆盖

public class p{
    private void m1() {
        System.out.println("in p m1...");
    }
    public static void main(String [] args) {
        p a = new B();
        a.m1();
    }
}
class B extends p{
    public void m1() {
        System.out.println("in B m1...");
    }
}

输出:in p m1...

最后举个栗子:

** 静态方法不存在被覆盖**

public class p{
    public static void m1() {
        System.out.println("in p m1...");
    }
    public static void main(String [] args) {
        p a = new B(); // 静态方法的执行与对象无关
        a.m1();
    }
}
class B extends p{
    // 尝试重写父类的静态方法
    public static void m1() {
        System.out.println("in B m1...");
    }
}

输出:in p m1...

sea

相关文章

  • java继承之方法覆盖

    总结: 1、什么时候要进行重写? 如果父类的方法已经无法满足当前子类的方法,需要将父类的方法重新写一边 2、子类如...

  • Java自学-接口与继承 重写

    Java 重写方法 子类可以继承父类的对象方法 在继承后,重复提供该方法,就叫做方法的重写 又叫覆盖 Overri...

  • Java学习14:继承、方法覆盖

    继承extends 继承的作用:基本作用:子类继承父类,代码可以得到复用。(这个不是重要的作用,是基本作用。)主要...

  • 2018-07-10

    JAVA重写的条件 条件: 子类继承父类,并重写父类的方法 1、 重写要求子类中的覆盖方法与父类中被覆盖的方法有...

  • JAVA学习笔记(四)

    继承要解决的问题什么是继承关系子类继承了父类的哪些成员方法覆盖方法重载(Overload)和方法覆盖(方法重写 O...

  • Java 线程的创建

    方式一:继承Thread类,覆盖run()方法 步骤: 定义类,并继承Thread类 在类里,覆盖run()方法 ...

  • 深入理解 Python 类和对象(1) - 鸭子类型和多态

    什么是鸭子类型? Java 中实现多态,需要继承父类,并覆盖父类中的方法。 Python 中实现多态,不需要继承任...

  • java中方法的重写

    java中方法的重写 [TOC] 理解 子类对从父类继承过来的方法进行改造,这种现象称为方法的重写或覆写或覆盖 要...

  • 方法覆盖和多态

    什么时候需要方法覆盖:子类继承父类之后,当继承过来的方法无法满足子类要求时,有权对此方法重新编写。就是方法覆盖 方...

  • Java继承中方法的覆盖和重载

    在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返...

网友评论

    本文标题:java继承之方法覆盖

    本文链接:https://www.haomeiwen.com/subject/wzqlsktx.html