方法重载
方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法。
参数不同主要指三个方面:
- 数量不同(0,1,2…)
- 类型不同
- 顺序不同
public Dog(){//无参构造方法
}
public Dog(int a){//一个参数的构造方法
age = a;
}
public Dog(int a,String n){//两个参数的构造方法
age = a;
name = n;
}
public Dog(String n,int a){//两个参数但是顺序不同的情况
age = a;
name = n;
}
public Dog(String n,String c){//两个参数但是数据类型不同的情况
name = n;
colour = c;
}
public Dog(int a,String n,String c){//三个参数的构造方法
age = a;
name = n;
colour = c;
}
在调用时会根据不同的参数表选择对应的方法。
Dog xh = new Dog(3,"小黑");
System.out.println(xh.name+" "+xh.age+"岁");
Dog xm = new Dog("小明",3);
System.out.println(xm.name+" "+xm.age+"岁");
注意:方法重载跟方法的返回值类型没有任何关系
方法重写
应用场景 :
当父类的方法实现不能满足子类需求时,可以对方法进行重写( override)
在子类中可以根据需要对从基类中继承来的方法进行重写。
方法重写规则
• 方法名相同、参数列表相同;
• 返回值类型相同;
• 访问权限不能小于父类权限;
注意:构造方法,静态方法不能重写,成员变量不存在重写
//构造方法,静态方法不能被重写, 属性也不存在重写,
//当父类中实现方式(代码) 不能满足子类中的需求,可以在子类中将父类中的方法重写(方法覆盖 覆写)
@Override//java中的注解标签 说明 此方法是从父类中重写过来的 在编译期间就会对语法进行校验
void eat() {
System.out.println("ssssss");//子类自己的实现方式
//super.eat();//调用父类的实现
super.sleep();
System.out.println("ssssss");
}