重写:
- 子类可以继承并重写父类的所有公共方法,如果是private私有化的方法则无法继承并重写, 只能重写方法不能重写变量
- 一个子类只能有一个父类, 一个父类可以有多个子类
- 重写限制: 重写的方法 方法名、返回值、参数值、参数类型 必须和父类的方法完全一致才能被定义为重写,否则会计入子类的独有方法
- 子类可以通过super关键字调用父类的方法
重载(Overloading)
- 重载是指在一个类中多个方法名相同 ,但是返回值、参数类型,参数数量、参数顺序等不同 意为重载 构造方法也可以重载
- 在程序开发中 为了代码的可读性 一般只重载功能相似的方法
重写示例代码:
父类:
//会被重写的 父类
public class RewriteParent {
public void output(){
System.out.println("我是父类,如果我出现的就证明没有被重写!!!!");
}
public void output02(){
System.out.println("我是父类,执行了output02方法");
}
}
子类:
//子类 继承父类 重写父类的方法
public class RewriteSon extends RewriteParent{
@Override
public void output(){
System.out.println("我是子类,如果我出现的就证明重写成功!!!!");
}
public void output03(){
System.out.println("子类独有的方法,如果用父类接收子类的实例化对象将无法调用!");
}
}
测试类方法:
/**
* 测试子类重写父类
* @Override注解 RetentionPolicy.SOURCE 在代码编译时及编译之前生效,即开发期间生效 用于检测重写语法是否正确
*/
public void testRewrite(){
//这里实例化一个子类,用父类接收 然后执行共有方法
RewriteParent rewriteParent = new RewriteSon();
rewriteParent.output(); //输出 我是子类,如果我出现的就证明重写成功!!!!
rewriteParent.output02();
}
重载的示例代码:
public class Overloading {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
//以下两个参数类型顺序不同
public String test(int a,String s){
System.out.println("test3");
return "returntest3";
}
public String test(String s,int a){
System.out.println("test4");
return "returntest4";
}
}
public static void main(String[] args){
Overloading o = new Overloading();
System.out.println(o.test());
o.test(1);
System.out.println(o.test(1,"test3"));
System.out.println(o.test("test4",1));
}
}
参考链接:https://blog.csdn.net/geekmubai/article/details/81975990