zoukankan      html  css  js  c++  java
  • Java类的设计----方法的重写、覆盖

    方法的重写、覆盖


    在子类中可以根据需要对从父类中继承来的方法进行改造—覆盖方法(方法的重置、重写),在程序执行时,子类的方法将覆盖父类的方法。


    覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型


    覆盖方法不能使用比被覆盖方法更严格的访问权限


    覆盖方法举例(1)

    public class Person {
      public String name;
      public int age;
      public String getInfo() {
        return "Name: "+ name + " " +"age: "+ age;
      }
    }
    public class Student extends Person {
      public String school;
      public String getInfo() { //覆盖方法
        return "Name: "+ name + " age: "+ age + " school: "+ school;
      }
      public static void main(String args[]) {
        Student s1=new Student();
        s1.name="Bob";
        s1.age=20;
        s1.school="school2";
        System.out.println(s1.getInfo()); //Name:Bob age:20 school:school2
      }
    }


    Person p1=new Person();
    p1.getInfo();
    //调用Person类的getInfo()方法
    Student s1=new Student();
    s1.getInfo();
    //调用Student类的getInfo()方法
    这是一种“多态性”:同名的方法,用不同的对象来区分调用的是哪一个方法。

    覆盖方法举例(2)

    class Parent {
      public void method1() {}
    }

    class Child extends Parent {
      private void method1() {}
      //非法,子类中的method1()的访问权限private比被覆盖方法的访问权限public弱
    }

    public class UseBoth {
      public void doOtherThing() {
        Parent p1 = new Parent();
        Child p2 = new Child();
        p1.method1();
        p2.method1();
      }
    }

  • 相关阅读:
    [洛谷P1484] 种树
    Codeforces Round #505 Div. 1 + Div. 2
    [NOIp2015] 斗地主
    ☆ [NOIp2016] 天天爱跑步 「树上差分」
    [NOI2010] 超级钢琴
    [POI2000] 病毒
    [SCOI2010] 股票交易
    [NOI2002] 贪吃的九头龙
    [ZJOI2008] 骑士
    LeetCode 笔记系列 18 Maximal Rectangle [学以致用]
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7224855.html
Copyright © 2011-2022 走看看