重写和重载的区别
1.重载实现于一个类中;重写实现于子类中。
2.重载(Overload):是一个类中多态性的一种表现,指同一个类中不同的函数使用相同的函数名,但是函数的参数个数或类型不同。与返回类型,抛出异常无关。调用的时候根据函数的参数来区别不同的函数。
3.重写(Override): 是父类与子类之间的多态性,是子类对父类函数的重新实现。函数名和参数与父类一样,子类与父类函数体内容不一样。
子类重写父类方法遵循原则:两同两小一大。两同:方法名相同,形参列表相同;两小:(1)子类方法返回值类型应比父类方法返回值类型更小或相等(2)子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;一大:指的是子类方法的访问权限应比父类方法的访问权限更大或相等,(public>protected>default>private)。
重载
package com.etime09;
public class Goods { //创建一个商品类
private String ID;
private int price;
private String name;
private String manufactureDate;
//实现构造函数的重载 参数个数或类型不同
public Goods() {
super();
// TODO Auto-generated constructor stub
}
public Goods(String iD) {
super();
ID = iD;
}
public Goods(String iD, int price) {
super();
ID = iD;
this.price = price;
}
public Goods(String iD, int price, String name) {
super();
ID = iD;
this.price = price;
this.name = name;
}
public Goods(String iD, int price, String name, String manufactureDate) {
super();
ID = iD;
this.price = price;
this.name = name;
this.manufactureDate = manufactureDate;
}
}
重写
package com.etime09;
public class Person { //创建一个父类Person
private String name;
private int age;
//父类中写一个eat()方法
public void eat() {
System.out.println("人都要吃饭");
}
}
---------------------------------------------
package com.etime09;
public class Student extends Person { //Student子类继承Person父类
@Override
//重写eat()方法 方法名,参数,返回类型相同;方法体内容不同
public void eat() {
System.out.println("学生喜欢吃肉");
}
}