重写:
package 重写;
/**
* 重写
* 记忆:2同2小1大:
* 2同是指方法名相同、形参列表相同;2小是指返回值类型相同或更小、抛出的异常更小;1大访问权限相同或更大
*
* 重写的是方法
* 成员方法
* 普通方法
* private方法,不能被重写
* protected方法、 default方法、public方法;可以被重写需满足:2同2小1大原则
* final修饰的方法:不能重写
* 静态方法 :不能重写
* 构造方法:不能被重写
* 验证是否可以被重载:
* 可以使用idea快捷键:Alt + I ==>override methods查看
*
**/
public class SuperA {
public Object method1(){//需符合:2同2小1大原则
System.out.println("SuperA中public方法method1");
return new Object();
}
protected void method2(){//需符合:2同2小1大原则
System.out.println("SuperA中protected方法method2");
}
void method3(){//需符合:2同2小1大原则
System.out.println("SuperA中default方法method3");
}
private void method4(){
System.out.println("SuperA中私有方法method4");
}
public static void method5(){
System.out.println("SuperA中static方法method5");
}
public final void method6(){
System.out.println("SuperA中final方法method6");
}
}
子类:
package 重写;
public class SubC extends SuperA{
@Override
public Object method1() {
return super.method1();
}
@Override
protected void method2() {
super.method2();
}
@Override
void method3() {
super.method3();
}
}
重载:
package 重载;
/**
* 两同一不同:两同是指同一个类、方法名相同,一不同是指参数列表不同
* 返回值类型不限制
*/
public class OverloadDemo {
public Integer sum(Integer a){
Integer sum = a+1;
return sum;
}
public Integer sum(Integer a, Integer b){
int sum = a+b;
return sum;
}
public Integer sum(Integer a, Integer b,Integer c){
Integer sum = a+b+c;
return sum;
}
public void sum(Integer a, String b){
System.out.println("方法参数:Integer a, String b");
}
public void sum(String a, Integer b){
System.out.println("方法参数:String a, Integer b");
}
}
资料:
https://blog.csdn.net/weixin_41033450/article/details/118416225