重载
在使用重载时只能通过不同的参数样式(Overload)
1、参数的个数不同
public static void get(int a){
}
public static void get(int a, int b){
}
2、参数的类型不同
public static void get(int a){
}
public static void get(double a){
}
3、参数的顺序不同
public static void get(int a,double b){
}
public static void get(double a,int b){
}
4、与参数的返回值类型无关
public static void get(int a){
}
public static int get(int a){
}
重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。
覆盖重写(Override)
如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。
1、覆盖重写必须存在父与子类的继承关系中
class Fu {
public void show() {
System.out.println("Fu show");
}
}
class Zi extends Fu { //子类重写了父类的show方法
public void show() {
System.out.println("Zi show");
}
}
public class ExtendsDemo05{
public static void main(String[] args) {
Zi z = new Zi(); // 子类中有show方法,只执行重写后的show方法
z.show(); // Zi show
}
}
2、方法名必修相同参数也必修相同
3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>(default)>private)
//就是子类的方法的修饰符必须大于父类的修饰
class Fu {
public void show() {
System.out.println("Fu show");
}
}
class Zi extends Fu { //子类重写了父类的show方法
protected void show() { //报错
System.out.println("Zi show");
}
}
4、重写的应用
子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从 而进行扩展增强。比如新的手机增加来电显示头像的功能,代码如下:
public class Phone {
public void call(){
System.out.println("打电话");
}
public void messige(){
System.out.println("发短信");
}
public void show(){
System.out.println("显示号码");
}
}
//智能手机
public class NewPhone extends Phone {
public void show(){
super.show();//调用父类的show()方法
System.out.println("显示姓名");
System.out.println("显示头像");
}
}