关键字:重写、重载、super
一、方法的重写和重载是java多态性的不同表现,重写是父类之间多态性的一种表现,重载可以理解成多态的具体表现形式。
(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,(同名,不同参)。
(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,(同名,同参)。

二、方法重写:参数列表必须完全与被重写方法的相同。子类返回值必须与父类相同,除非是子类名。子类的访问权限不能比父类的访问权限更低。例如:如果父类的一个方法被声明为 protected,那么在子类中重写该方法就不能声明为 private。
class Animal {
public void move() {
System.out.println("动物可以动");
}
}
class Dog extends Animal {
public void move() {
System.out.println("狗可以跑和走");
}
public static void main(String args[]) {
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();// 执行 Dog 类的方法
}
}
上面代码中运行结果如下:
动物可以动 狗可以跑和走
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
b.bark();//执行 Dog 类的方法
}
而这个代码由于b的父类Animal中没有bark方法,所以会编译出错。
三、super关键字的使用
在子类中可以用super关键字来调用
class Animal{
public void move(){
System.out.println("动物可以动");
}
}
class Dog extends Animal{
public void move(){
super.move(); // 应用super类的move方法
System.out.println("狗可以跑和走");
}
public static void main(String args[]){
Animal b = new Dog(); // Dog 对象
b.move(); //执行 Dog类的方法
}
}
这个代码的输出结果就是
动物可以移动 狗可以跑和走
四、方法重载:被重载的方法必须改变参数列表(参数个数或类型不一样)。被重载的方法可以改变返回类型。被重载的方法可以改变访问修饰符。
public class Demo01 {
//以下一个有参数一个无参数
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){
Demo01 o = new Demo01();
System.out.println(o.test());
o.test(1);
System.out.println(o.test(1,"test3"));
System.out.println(o.test("test4",1));
}
}
输出结果如下:
test1 1 test2 test3 returntest3 test4 returntest4
来源:https://www.cnblogs.com/tudoukaoya/p/12044462.html