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();
      }
    }

  • 相关阅读:
    ThinkPHP实现定时任务
    VUE 父子组件之间通信传值 props和 $emit,事件触发传值ref,以及兄弟组件之间的通信传值 eventBus
    JS链接转换为二维码
    VUE 动态切换列表active样式
    微信内置浏览器video标签自动全屏的问题
    JS监听video视频播放时间
    JS数据统计表 highcharts.js的运用
    JS 自动返回每个月的天数
    JS 一键复制插件应用 和 原生实现
    JS enter键一键登录
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7224855.html
Copyright © 2011-2022 走看看