• Java基础之:方法重写


    Java基础之:方法重写

    方法重写(覆盖),就是在子类中有一个方法与父类中的方法,有一样的方法名,返回类型,参数列表。那么我们就说子类的方法重写(Override)了父类的方法。

    简单案例

    class A{
        
        public int AA(int n1,intn2){
            return n1 + n2;
        }
    }
    class B extends A{
        //这时,我们就说 子类B 的 AA方法,重写了 父类 A的AA方法
        //@Override 注解: 作用是标记 方法重写了, 如果不满足重写规则,就会报错
        @Override
        public int AA(int n1,int n2){
            return n1 - n2;
        }
    }

    方法重写细节注意

    1. 子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全一样。

    2. 子类方法的返回类型可以是父类方法的返回类型的子类,例如 若父类方法返回Object类型,那么子类方法可以设置返回类型为String类型。(jdk5.0的特性)

    3. 子类方法不能缩小父类方法的访问权限。例如父类方法是public修饰的,那么子类也只能是public修饰的。父类方法是portected修饰的,子类方法可以是public或protected修饰的。

    简单案例

    class AA {
        
        public void say(String name) {
            System.out.println("AA say() " + name);
        }
        
        public Object hi() {
            return new Object();
        }
        
        void run() {
            System.out.println("AA run...");
        }
    }
    ​
    class BB extends AA{
        
        //子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全一样
        public void say(String name) {
            System.out.println("BB say() " + name);
        }
        
        //子类方法的返回类型需要和父类方法返回类型一样,或者是父类返回类型的子类
        public String hi() {
            return "";
        }
        
        //子类方法不能缩小父类方法的访问权限
        //一代更比一代强
        public void run() {
            System.out.println("BB run...");
        }
        
    }

    重写与重载

    简单练习

    编写一个Person类,包括属性/private(name、age),构造器、方法say(返回自我介绍的字符串)。

    编写一个Student类,继承Person类,增加ID、Score属性/private,以及构造器,定义say方法(返回自我介绍的信息)。

    编写Test类,分别创建Person和Student对象,调用say方法输出自我介绍。

    package override.ClassWork;
    ​
    public class Override_ClassWork {
        public static void main(String[] args) {
            Person person = new Person("小范",20);
            Student student = new Student("小黄",18,1001,123);
            
            System.out.println(person.say());
            System.out.println(student.say());
        }
    }
    ​
    //编写一个Student类,继承Person类,增加ID、Score属性/private,
    //以及构造器,定义say方法(返回自我介绍的信息)。
    class Student extends Person{
        private int ID;
        private int Score;
        public Student(String name, int age, int iD, int score) {
            super(name, age);
            ID = iD;
            Score = score;
        }
        
        public Student() {
            super();
        }
        
        @Override
        public String say() {
            
            return super.say()+"  ID:"+ID+"   Score:"+Score;
        }
    }
    ​
    //编写一个Person类,包括属性/private(name、age),构造器、方法say(返回自我介绍的字符串)。
    class Person{
        private String name;
        private int age;
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        
        
        public Person() {
            super();
        }
    ​
        public String say() {
            
            return "name:"+name+"    age:"+age;
        }
    }

     

     

  • 相关阅读:
    ESXi 5.5 添加驱动
    .net static 变量
    socket
    .net HttpWebRequest 模拟form提交
    node.js form 上传
    .net Thrift 之旅 (二) TServer
    SVN服务器从Windows迁移到LInux
    如何在windows上安装部署设置SVN服务器
    [Ubuntu]在Ubuntu下搭建自己的源服务器
    Eclipse总是自动关闭
  • 原文地址:https://www.cnblogs.com/SongHai/p/14106686.html
Copyright © 2020-2023  润新知