1、英文名字的不同
重载:Overload重写:Override2、位置不同
重载:同一个类中重写:子类和父类之间3、作用不同
重载:在一个类里面为一种行为提供多种实现方式并提高可读性重写:父类方法无法满足子类的要求,子类通过方法重写满足要求 package cn.tedu.overload; //这个类用来测试 方法的重载现象:在同一类中,方法名相同+参数列表不同! public class Test5_Overload { public static void main(String[] args) { add(1,2); add(10,"jack"); add(10,5,"jack"); add("jack",10,5); } public static void add(int a,int b) { System.out.println(a+b); //3 } public static void add(int a,String b) { System.out.println(a+b); //10jack } public static void add(int a,int b,String c) { //a+b其中+用来做加法运算,+c是用来做字符串拼接形成大串 System.out.println(a+b+c); //15jack } public static void add(String a,int b,int c) { System.out.println(a+b+c); //jack105 } } package cn.tedu.extendsdemo; //这个类用来测试,继承中成员方法的使用 //1.方法重写的意义:当业务发生改变时,我们不能修改源代码,只能发生继承关系后,修改功能 //2.重写的前提:继承关系+方法声明和父类的一模一样 //3.子类必须 有权限 重写父类的方法,子类权限>=父类权限 public class Test5_UseExtends2 { public static void main(String[] args) { Erzi erzi=new Erzi(); erzi.eat();//父类的//重写前是父类的,重写后,用的是子类的,但是父类源代码没有任何影响 erzi.sleep();//父类的 erzi.coding();//子类特有的 } } class Baba{//父类 public void eat() { System.out.println("正在吃肉"); } public void sleep() { System.out.println("正在睡觉"); } } class Erzi extends Baba{ //3.当父类的原有的功能,发生了改变时,为了不修改源代码,子类可以用方法重写 //重写:继承关系+子类的方法声明和父类的一样 @Override//重写方法的标志,注解 public void eat() { System.out.println("喜欢吃菜"); } //1.子类可以使用父类的所有功能,除了private //2.子类可以使用父类的同时,还可以自己扩展 public void coding() { System.out.println("正在敲代码"); } }注:记忆的时候这三个是比较明显的不同,在叙述的时候可以从这三方面入手,之后再说他的细微差别
4、方法名
重载:相同重写:相同5、参数
重载:不同重写:相同6、修饰符
重载:无关重写:大于等于7、返回值
重载:无关重写:小于等于8、抛出异常
重载:无关重写:小于等于9、重载:是一个类中多态的一种表现 重写:子类与父类之间多态的一种表现
注:4-9的区别记忆法 方法的组成结构 修饰符 返回值 方法名 ([参数]) {方法体;} 例如:
private static void f1(int a, int b, String name) throws Exception { System.out.println(a+b+name); }依照方法结构对应表格可以方便记忆不同()