extendsis-a关系可访问性重写与重载

重载不等同于重写:方法的重写发生在父类与子类中,而重载发生在本类;重载的方法名必须相同,重写的方法名相同且返回值类型必须相同;重载的参数列表不同,重写的参数列表必须相同。

方法重载

方法重载的定义是如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载

对于定义我们可以有以下的理解:

  • 方法名相同
  • 方法的参数类型,参数个数不同
  • 方法的返回类型可以不相同
  • 方法的修饰符可以不相同
  • ​main​​方法也可以被重载

方法重载例子如下:

public class Person {

String name; //name字段
int age; //age字段

public Person(){ //无参构造方法,命名与类名一致
this.name = "Jack";
this.age = 18;
}

public Person(String name){ //重载 构造方法1(含一个参数name)
this.name = name;
this.age = 18;
}

public Person(String name, int age){ //重载 构造方法2(含两个参数name,age)
this.name = name;
this.age = age;
}

public static void main(String[] args) {
Person mine = new Person(); //创建对象引用mine,此时调用 无参构造方法
Person he = new Person("Lucy"); //创建对象引用he,此时调用构造方法1
Person anybody = new Person("Helen", 3); //创建对象引用anybody,此时调用构造方法2
System.out.println("My name is " + mine.name + " and age is " + mine.age); //输出mine对象的字段
System.out.println("His name is " + he.name + " and age is " + he.age); //输出he对象的字段
System.out.println("Your name is " + anybody.name + " and age is " + anybody.age); //输出anybody的字段
}

}


方法重写

超类的调用final类instanceof