函数重载(Overload):
1.函数名称一样
2.参数类型与参数个数不一样
3.与返回值无关
函数重写(Override):
1.重写必须继承,重载不需要
2.参数数目相同,参数类型兼容
3.重写的方法修饰符大于等于父类的方法
4.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常
重载案例
public class test1 {
public static void main(String[] args) {
test1 test = new test1();
System. out.println(test.sum(0.1, 0.5));
System.out.println(test.sum(1, 5));
System.out.println(test.sum("1", "2"));
System.out.println(test.sum(5));
}
public double sum(double num1,double num2){
return num1 + num2;
}
public int sum(int num1,int num2){
return num1 + num2;
}
public String sum(String num1 ,String num2){
return num1 + num2;
}
//个数不一样
public String sum(int num1){
return Math.abs(num1)+"";
}
}
重写案例
package com.lanou.obj;
//子类拥有父类所有的非private修饰的属性和方法
public class test02 {
//封装 隐藏一些类的具体细节,提供公共方法来调用
public static void main(String[] args) {
Teacher t = new Teacher();
t.age = 12;
t.name = "小明";
t.study();
t.teach();
//调用方法的顺序
//自己-->父类-->父类的父类-->object
//如果都不存在,报错
}
}
class Person{
int age;
String name;
void study(){
System.out.println("学习");
}
}
class Teacher extends Person {
void teach(){
System.out.println("教书");
}
}
class Student extends Person{
//方法重写
//重写 1.继承 2.方法重写父类的方法
//override //注解 //@override方法重写的注解
void study(){
super.study();//调用父类方法
System.out.println("教师学习");
}
void doHomeWork(){
System.out.println("做作业");
}
//场景 父类的方法的需求不满足子类的时候
}