您的位置:

方法的重写

在java中,方法的重写指的是子类重写了父类中同名同参数列表的方法。通过方法的重写,我们可以实现对父类方法的覆盖,使得子类可以根据自己的需要重新定义父类方法的行为。

一、重写的基本原则

Java中的方法重写有以下几个原则: 1. 方法名、参数列表必须一致,返回值也必须相同或者是其子类。 2. 重写方法访问修饰符不能比父类的窄,比如父类的访问修饰符为public的话,那么子类的就不能是protected或者default。 3. 重写方法抛出的异常不能大于父类方法的异常。如果父类方法不抛出异常,在重写时也不能抛出异常;如果父类方法抛出了异常,则子类重写时可以不抛出异常,或者抛出相同的异常或其子类异常。

二、示例代码

下面是一个重写的示例代码,其中Person为父类,Student为子类,Student重写了Person中的introduce方法。

public class Person {
    private String name;
    private int age;
 
    public Person(String name, int age) {
        this.name = name;
        this.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;
    }
 
    public void introduce() {
        System.out.println("我叫" + name + ",今年" + age + "岁。");
    }
}

public class Student extends Person {
 
    public Student(String name, int age) {
        super(name, age);
    }
 
    @Override
    public void introduce() {
        System.out.println("我叫" + getName() + ",今年" + getAge() + "岁,我是一名学生。");
    }
 
    public static void main(String[] args) {
        Person p = new Student("Tom", 20);
        p.introduce();
    }
}
这个例子中,Student类继承了Person类,重写了其中的introduce方法,输出学生的信息。

三、重写与多态

重写与多态是Java中的两个重要概念。多态是指同一种类型的对象,在不同的情况下会有不同的表现形式。而重写是多态的一种实现方式。 我们来看下面的代码:

public class Animal {
    public void shout() {
        System.out.println("动物发出叫声");
    }
}

public class Dog extends Animal {
    @Override
    public void shout() {
        System.out.println("汪汪汪");
    }
}

public class Cat extends Animal {
    @Override
    public void shout() {
        System.out.println("喵喵喵");
    }
}

public class AnimalTest {
    public static void main(String[] args) {
        Animal animal1 = new Dog();
        Animal animal2 = new Cat();
        
        animal1.shout();
        animal2.shout();
    }
}
在AnimalTest类中,我们实例化了一个Dog和一个Cat对象,它们都是Animal类型的对象。在animal1和animal2调用shout()方法时,输出的结果分别为“汪汪汪”和“喵喵喵”。 这个例子中,我们可以看到方法的重写实现了多态,不同的子类重写了父类的方法,使得同样的方法调用在不同的情况下有了不同的效果,这就体现了Java中的多态性。

四、总结

方法的重写是实现多态的一种方式,它能够让子类根据自己的需要重新定义父类方法的行为。方法的重写需要遵循一定的规则和原则,同时它也与访问修饰符、异常等相关。我们应该熟练掌握方法的重写,掌握Java中的多态性,并在实际编程中灵活运用。