重写

作者: 落在牛背上的鸟 | 来源:发表于2018-03-20 22:43 被阅读17次

    方法的重写

    当子类定义了与弗雷方法名称相同、形参列表相同、返回值相同的方法时,就称为重写
    范例:观察重写

    class A {
        public void print() {
            System.out.println("A类中的方法!");
        }
    }
    
    class B extends A {
        public void print() {
            System.out.println("B类中的方法!");
        }
    }
    
    public class OverrideDemo {
        public static void main(String[] args) {
            B b = new B();
            b.print();  //B类中的方法!
        }
    }
    

    发生重写之后,会调用实例化子类中的已经被重写的方法。一个类可能回产生多个子类,哪个每个子类都可以有方法重写。
    重写的使用原则(被动):
    如果父类中的方法功能不足,但是子类又必须使用这个方法名称时,就需要使用重写。重写的方法控制权限不能比父类更严格。

    范例:父类方法被重写,但是又要调用父类的方法,可以使用super关键字

    class A {
        public void print() {
            System.out.println("A类中的方法!");
        }
    }
    
    class B extends A {
        public void print() {
            super.print();
            System.out.println("B类中的方法!");
        }
    }
    
    public class OverrideDemo {
        public static void main(String[] args) {
            B b = new B();
            b.print();  //B类中的方法!
        }
    }
    

    super 和 this 的区别

    1. "this.方法()" 会先查找本类中时候存在有调用的方法,如果存在直接调用,如果不存在则查找父类中是否具备此方法。
    2. "super.方法()"直接去调用父类中的方法。

    面试题重载和重写的区别?

    No 区别 重载 重写
    1 英文单词 Overloading Override
    2 发生范围 发生在一个类里 发生在继承关系中
    3 定义 方法名称相同、参数的类型和个数不同 方法名称相同、参数的类型、个数相同、方法的返回值相同
    4 权限限制 没有权限限制 被重写的方法控制权限不能比父类更加严格

    相关文章

      网友评论

          本文标题:重写

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