1、重载:方法名相同而形式参数不同。
/**
* 方法重载:首先来看一个方法的构成:访问权限修饰符+其他修饰符(static、final等)+返回值类型+方法名+参数列表
* 在一个类中,区别一个方法的要素为方法名+参数列表,这两个要素构成方法的方法签名
*/
重载是一个类中多态性的一种表现,实例如下所示。
class MyOverload{
public void site(){
System.out.println("0");
}
public void site(int i,int c){
System.out.println("1");
}
public void site(int j,long t){
System.out.println("2");
}
public void site(long j,int t){
System.out.println("3");
}
}
2、重写:不改写方法签名而改写方法的实现逻辑。
- 在子类中可以根据需要对从基类中继承来的方法进行重写。
- 重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。
- 重写方法不能使用比被重写的方法更严格的访问权限。
class Person{
private int age;
private String name;
public void setAge(int age){
this.age = age;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public String getName(){
return name;
}
public String getInfo(){
return "Name is:"+name+",Age is "+age;
}
}
class Student extends Person{
private String school;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return school;
}
/**
* 这个是重写父类的方法
* 就是不改变方法的签名,改写方法内的具体实现
*/
public String getInfo(){
return "Name is:"+getName()+",Age is "+getAge()+",School is:"+school;
}
}
public class TestOverRide{
public static void main (String args[]){
Student student = new Student();
Person person = new Person();
person.setAge(1000);
person.setName("lili");
student.setAge(23);
student.setName("leilei");
student.setSchool("hunandaxue");
System.out.println(person.getInfo());
System.out.println(student.getInfo());
}
}
网友评论