重写(Override)
重写是子类对父类的允许访问的方法的进行重新编写, 但是返回值和形参都不能改变。
实例
class Animal{
public void run(){
System.out.println("Animal Run");
}
} class Dog extends Animal{
public void run(){
System.out.println("Dog Run");
}
} public class Test{
public static void main(String[] args){
Animal animal = new Animal();//创建Animal对象
Dog dog = new Dog(); //创建Dog对象 animal.run(); //执行Animal类的方法
dog.run(); //执行Dog类的方法
}
}
运行输出:
Animal Run
Dog Run
重载(overloading)
重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
实例
public class Test{
//重载方法1 test1
public int test(){
System.out.println("test1");
return 1;
}
//重载方法2 test2
public void test(int a){
System.out.println("test2");
} //以下两个参数类型顺序不同
//重载方法3 test3
public String test(String s,int a){
System.out.println(s);
return "return test3";
} //重载方法4 test4
public String test(int a,String s){
System.out.println(s);
return "return test4";
} public static void main(String[] args){
Test t = new Test();
System.out.println("-----------------------");
System.out.println(t.test());
System.out.println("-----------------------");
t.test(1);
System.out.println("-----------------------");
//
System.out.println(t.test(1,"test3"));
System.out.println("-----------------------");
System.out.println(t.test("test4",1));
}
}
运行输出:
-----------------------
test1
1
-----------------------
test2
-----------------------
test3
return test4
-----------------------
test4
return test3
@override
判断是否是方法覆盖,在方法上添加@override标签后,如果这个方法是覆盖了父类的覆盖方法,则编译通过,如果不是则报错
由于fly1()方法不是覆盖方法,所以编译时报错