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

  • 相关阅读:
    I/O FileInputStream 字节类型文件输入输出流 (汉字显示乱码)
    Date 获取日期 SimpleDateFormat
    Random 随机生成数
    String StringBuffer Arrays 字符串修改 拼接
    Math
    装箱 拆箱Integer .ValueOf()
    LinkedListTest
    springboot cache
    耀眼的明星--项羽
    耀眼的明星--百年虚云
  • 原文地址:https://www.cnblogs.com/justdoitba/p/7224855.html
Copyright © 2011-2022 走看看