【JavaSE】方法重写/覆盖(override)

简介: 【JavaSE】方法重写/覆盖(override)

1. 基本介绍

在这里插入图片描述

2. 快速入门

Animal

public class Animal {
    public void cry() {
        System.out.println("动物叫唤..");
    }
}

Dog

public class Dog extends Animal{
    //解读
    //1. 因为Dog 是 Animal子类
    //2. Dog的 cry方法和 Animal的 cry定义形式一样(名称、返回类型、参数)
    //3. 这时我们就说 Dog的cry方法,重写了Animal的cry方法
    public void cry() {
        System.out.println("小狗汪汪叫..");
    }

}

Override01

public class Override01 {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.cry();
    }
}

在这里插入图片描述

  • 把上面 Dog 类中的 cry() 方法注释掉,再运行:

在这里插入图片描述

3. 注意事项和使用细节

  • 方法重写也叫方法覆盖,需要满足下面的条件

在这里插入图片描述
在这里插入图片描述

  • 但可以放大父类方法的访问权限

4. 练习

  1. 题1 :请对方法的重写和重载做一个比较

在这里插入图片描述

  1. 题2

1 ) 编写一个 Person 类,包括属性/private(name、age),构造器、方法 say(返回自我介绍的字符串)。
2 ) 编写一个 Student 类,继承 Person 类,增加 id、score 属性/private,以及构造器,定义 say 方法(返回自我介绍的信息)。
3 ) 在 main 中,分别创建 Person 和 Student 对象,调用 say 方法输出自我介绍

package com.xdr630.override_;

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String say(){
        return "name=" + name + " age=" + age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package com.xdr630.override_;

public class Student extends Person{
    private int id;
    private double score;

    public Student(String name, int age, int id, double score) {
        //这里会调用父类构造器
        super(name, age);
        this.id = id;
        this.score = score;
    }

    public String say(){
        //这里体现super的一个好处,代码复用.
        return super.say() + " id=" + id + " score=" + score;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}
public class OverrideExercise {
    public static void main(String[] args) {
        Person xdr = new Person("xdr", 23);
        System.out.println(xdr.say());

        Student mike = new Student("mike", 23, 12, 99);
        System.out.println(mike.say());
    }
}

在这里插入图片描述

目录
相关文章
|
2月前
|
Java
被final修饰的类的所有方法都不能被重写吗
在Java中,被`final`修饰的类不能被继承,因此其所有方法也不能被重写。`final`关键字确保了类的定义和行为不会被子类改变。
92 1
|
8月前
|
存储 Java 编译器
实例化&&构造方法&&static统统都学会
实例化&&构造方法&&static统统都学会
50 0
|
8月前
|
Java 编译器
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
436 0
|
druid Java 编译器
Java的第七篇文章——面向对象接口(包含了接口、static修饰符、final修饰符、main方法、内部类等知识点)
Java的第七篇文章——面向对象接口(包含了接口、static修饰符、final修饰符、main方法、内部类等知识点)
|
数据安全/隐私保护
java------方法的覆盖[重写],super和final关键字
java------方法的覆盖[重写],super和final关键字
|
Java
java方法重写(Override)
1.重写的概念 重写是子类对父类(或爷爷及以上类)的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 2.实现一个简单的Demo 父类:
132 0
java方法重写(Override)
|
Java 程序员
Object类九大方法之getClass方法
Object类九大方法之getClass方法
154 0
Object类九大方法之getClass方法
Java——重写(Override)与重载(Overload)(概念理解+应用举例)
Java——重写(Override)与重载(Overload)(概念理解+应用举例)
Java——重写(Override)与重载(Overload)(概念理解+应用举例)
|
存储 Java 编译器
Java面向对象——封装、构造方法、private、static
Java面向对象——封装、构造方法、private、static
400 0
Java面向对象——封装、构造方法、private、static
探秘static——类不需实例化就能用?
一般情况下,需要用到某个类的时候,都必须先实例化这个类,才能对其进行调用。在编程过程中发现,有些类不用实例化就可以直接拿来使用,使用它的字段、方法等等。
探秘static——类不需实例化就能用?