java方法重写学习笔记

方法重写介绍

  • 子类和父类有两个返回值,参数,名称都一样的方法, 子类的方法会覆盖父类的方法。
  1. 调用
java 复制代码
public class Overide01 {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.cry();
    }
}
  1. Animal类
java 复制代码
public class Animal {
    public void cry() {
        System.out.println("动物叫");
    }
}
  1. Dog类
java 复制代码
public class Dog extends Animal{
//    public void cry() {
//        System.out.println("狗叫");
//    }
}

我们把Dog类的cry方法注释掉了,就会到父类里面去找。

方法重载三个细节

  1. 子类方法,形参列表,方法名和父类完全一致

  2. 子类的返回类型如果和父类不同,要保证子类返回的类型父类返回类型子类

  3. 子类的方法不能缩小父类方法的访问权限范围

  4. 调用

java 复制代码
public class Overide01 {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.cry();
    }
}
  1. Animal类
java 复制代码
public class Animal {
    public void cry() {
        System.out.println("动物叫");
    }

    public Object getSth() {
        return null;
    }

    protected First getA() {
        return null;
    }
}
  1. Dog类
java 复制代码
public class Dog extends Animal{
    public void cry() {
        System.out.println("狗叫");
    }
    //String正好是Object的子类,反过来就会报错
    public String getSth() {
        return null;
    }

    public Second getA() {
        return null;
    }
}

class First {

}


class Second extends First {

}

重写的练习

  • 刚开始的误区
  1. 每个Say方法写成void的返回类型,每个类型打印自己的属性,没有体现出来继承的优势,
  • 改进
  1. 父类的Say方法的返回类型写为String类型,返回父类自身的属性
  2. 子类的Say方法的可以用super关键字直接调用父类的方法,在此基础上,再加上自身的属性。

代码如下:

Person类:

java 复制代码
public class Person {
    Person(String name, int age) {
        this.m_Name = name;
        this.m_Age = age;
    }
    String say () {
        return "name = " + m_Name +  "age = " + m_Age;
    }
    public String getName() {
        return m_Name;
    }
    public int getAge() {
        return m_Age;
    }
    private String m_Name;
    private int m_Age;
}

Student类

java 复制代码
public class Student extends Person {
    String Say () {
        return super.say()  +  "id = " + m_Id + "score = " + m_Id;
    }
    Student(String name, int age, String id, double score) {
        super(name, age);
        this.m_Id = id;
        this.m_Score = score;
    }
    private String m_Id;
    private double m_Score;
}

调用

java 复制代码
public class OverrideExercise {
    public static void main(String[] args) {
        Person lfm = new Person("lfm", 19);
        System.out.println(lfm.say());

        Student lfm314 = new Student("lfm", 19, "314", 88.5);
        System.out.println(lfm314.Say());
    }
}
相关推荐
半生过往11 分钟前
前端学 Java 课程笔记
java·前端·笔记
九硕智慧建筑一体化厂家25 分钟前
楼宇自控|智慧建筑核心引擎!楼宇自控系统,赋能建筑高效低碳运维
运维·人工智能·笔记·智慧城市
mmsx31 分钟前
基于 Android 的校园信息管理系统源码
android·java·okhttp
Buke..1 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(上):Frida 反调试绕过与 unidbg 调用
java·开发语言·爬虫·python·安卓
竹枝溪1 小时前
Tomcat与Servlet全套小白教程
java·servlet·tomcat·cookie·filter·session·listener
GGMM7891 小时前
施耐德 VX5A1HC90110(VX5A1HD9011)ATV61/ATV71 90‑110KW 电源驱动板详解
笔记·变频器·变频器维修
UseLessQQ1 小时前
云计算k8s集群部署
java·kubernetes·云计算
我命由我123452 小时前
人脸识别 - 人脸识别选帧
java·人工智能·python·算法·安全·java-ee·人脸识别
宠友信息2 小时前
IM系统开发技术路线分析,即时通讯源码助力快速搭建聊天应用
java·spring boot·redis·websocket·mysql·uni-app·vue
Wang's Blog2 小时前
PostgreSQL笔记48: 全文检索与向量检索的对比与混合检索实践
笔记·postgresql·全文检索