什么是多态
- 同一个行为具有多个不同表现形式或形态的能力
- 同一个接口,使用不同的实例而执行不同重载
- 可替换
- 可扩充
- 消除类型之间的耦合性
- 灵活性
- 简化
- 什么是重载?
- 在一个类里面或一个子类,方法名相同,参数不同。(返回类型可以相同也可以不同)
- 每一个重载方法都必须有一个独一无二的参数类型列表。
- 最常用的地方就是构造器的重载。
- 重载的好处
调用端(方法的使用者):在调用的时候,使用相同名字的方法实现不同的功能。
- 实现
Public int test(){
Sout("test1");
Return 1;
}
Public void test(int a){
Sout("test2")
}
Public String test(int a,String s){
Sout("test3");
Return "returntest3";
}
Public String test(String s ,int a){
Sout("test4")
Return "returntest4";
}
Pubic static viod 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))
}
- 重写
- 什么是重写?
- 子类对父类允许访问的方法实现过程的重新编写。
- 返回值和参数类型都不能改变,既外壳不变,核心重写。
- 重写的好处
- 子类可以根据需要,定义特定自己的行为。
- 限制
- 构造方法不能重写
- 不能继承的类不能重写。
- 子类重写方法访问权限不能低于父类。
- final修饰的方法不能重写。
- static的方法不能重写,但是可以再声明。
- Super关键字
当子类中调用父类的重写方法时,要使用super
Calss Animal{
Public void move(){
sout("动物可以移动");
}
}
Calss Dog extends Animal{
Public void move(){
Super.move();//应用super类的方法
Sout("狗会可以跑");
}
}
Public void TestDog{
Public static void main(String args[]){
Animal b = new Dog();
b.move();
}
}
- 总结
- 重载是一个类多态的表现,重写是子类与父类的一种多态的表现。
- 重载是一个类中定义了多个方法名相同,而参数数量不同或数量相同类型不同和次序不同。
重写与重载之间的区别
区别点 | 重载方法 | 重写方法 |
方法名 | 必须相同 | 必须相同 |
参数列表 | 必须修改 | 不能修改 |
返回类型 | 可以修改 | 不能修改 |
异常 | 可以修改 | 可以减少或删除,一定不能抛出新的或者更广的异常 |
访问 | 可以修改 | 不能做更严格的限制(可以降低限制) |