方法重写和重载

方法重写和重载

方法重写和重载的区别

方法的重写:

  • 定义:在子类中可以根据需要对从父类中继承来的方法进行改造,也称 为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。

  • 要求:

    1. 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表
    2. 子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型
    3. 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限 子类不能重写父类中声明为private权限的方法
    4. 子类方法抛出的异常不能大于父类被重写方法的异常
  • 注意:
    子类与父类中同名同参数的方法必须同时声明为非static的(即为重写),或者同时声明为 static的(不是重写)。因为static方法是属于类的,子类无法覆盖父类的方法。

举例1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Person { 
public String name;
public int age;
public String getInfo() {
return "Name: "+ name + "\n" +"age: "+ age; }
} public class Student extends Person {
public String school; public String getInfo() {
//重写方法 return "Name: "+ name + "\nage: "+ age + "\nschool: "+ school;
}

public static void main(String args[]){
Student s1=new Student();
s1.name="Bob";
s1.age=20;
s1.school="school2";
System.out.println(s1.getInfo()); //Name:Bob age:20 school:school2
} }

举例2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Parent { 
public void method1() {}
}

class Child extends Parent {
//非法,子类中的method1()的访问权限private比被覆盖方法的访问权限public小
private void method1() {}
}
public class UseBoth {
public static void main(String[] args) {
Parent p1 = new Parent();
Child c1 = new Child();
p1.method1();
c1.method1();
} }

方法的重载:

必须就有不同的参数列表;
可以有不同的返回类型;
可以有不同的访问修饰符;
可以抛出不同的异常;

举例:

1
2
3
4
5
6
7
8
 public class Demo{
void speak(){
System.out.println("重载方法");
}
void speak(int a){
System.out.println(a);
}
}

评论 (tip: 昵称框输入QQ号即可评论)

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×