在继承中有时候子类中的方法并不能满足我们开发的要求 我们就可以使用方法重写来进行定义
对父类的方法进行一些修改就是重写父类方法
注意
重写的方法 必须有同样的方法名、方法参数、返回值类型
构造方法不能被重写
重载和重写的区别
重载:
同一个类中
方法名相同
参数列表不同
返回值类型不同
重写:
两个类
方法名相同
参数列表相同
返回值类型相同
我们可以通过一个注解来检查我们是否完成了重写的要求
@Override 是强制检查该方法是否重写方法
代码
父类
class vehicle{ private String brand; private int price; private String colour; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public String getColour() { return colour; } public void setColour(String colour) { this.colour = colour; } public vehicle(String brand, int price, String colour) { this.brand = brand; this.price = price; this.colour = colour; } public vehicle() { } @Override public String toString() { return "vehicle{" + "brand='" + brand + '\'' + ", price=" + price + ", colour='" + colour + '\'' + '}'; } public void rum(){ System.out.println("开始开车"); } }
子类:
class carriage extends vehicle{ @Override public void rum() { System.out.println("出发"); } }
测试类:
public static void main(String[] args) { carriage carriage = new carriage(); carriage.setBrand("宝马"); carriage.setPrice(500000); carriage.setColour("蓝色"); System.out.println(carriage); carriage.rum(); }
运行结果:
最后的运行结果是出发而并不是开始开车
如果想让父类中的方法体执行可以使用super
super是访问父类的成员
子类
class carriage extends vehicle{ @Override public void rum() { super.rum(); System.out.println("出发"); } }
运行结果
最后的结果是两个一个是父类中的方法 一个是子类中的方法