1. 方法重载与方法复写的区别
区别 | 方法重载 | 方法复写 |
英文单词 | Overloading | Override |
概念 | 方法名称相同,参数的个数或者类型不同 | 方法名称相同,参数的个数和类型相同,方法的访问权限不能更严格 |
使用范围 | 发生在同一个类中 | 发生在继承关系中,是由子类进行复写 |
比较 | super | this |
使用范围 | 是由子类访问父类中的内容 | 是直接访问本类中的内容 |
访问属性时的格式 | super.父类属性, 如果属性没有被复写,则也可以不写super | this.本类属性 |
访问方法时的格式 | super.父类方法(),如果父类方法没有被复写,则可以不写super也表示调用父类中的方法 | this.本类方法(),可以不写this,也表示调用本类的方法 |
访问构造函数时的格式 | super()是访问父类中的构造方法,必须放在首行 | this()是访问本类中的其他构造方法(注意留入口!),必须放在首行 |
特殊点 | 无 | this表示当前对象,当前操作方法的对象就为当前对象 |
复写与重载
其实 之前学习C++的时候 重载这一特性掌握得还算不错,JAVA中重写这个功能有点强势 但是初学的时候还是觉得相当懵逼的
JAVA中重载和复写有什么区别和相同呢,这其中关系到继承的关系。
1.重载是在一个类中,多个方法的方法名相同,但因为参数不一样,处理也不一样,这种形式就叫重载。
2.复写则是发生在父子类中,子类中得方法和参数和父类一样,但方法的内容不一样,这种形式就叫复写。
重载:
public class Person {
String name="wood";
int age=12;
//一个类中方法名一样,因为参数不一样而执行不同的方法叫重载
void out(){
System.out.println("第一个方法!");
}
void out(String name){
System.out.println("第二个"+this.name+"---"+name);
}
}
复写:
public class Strudent extends Person {
//复写的意思是在子类中,方法和参数都和父类一样,但修改方法的内容。
void out(){
//super的用处在于减少重复代码,此处使用表示调用父类的out方法。
super.out();
System.out.println("复写的方法!");
}
}