举个例子,假设你有一个父类 Person 和一个子类 Student,其中父类有一个方法 getName,子类重写了该方法,如下所示:
class Person {
protected String name
public String getName() {
return name
}
}
class Student extends Person {
@Override
public String getName() {
return "Student: " + name
}
}
然后你可以这样使用父类的引用变量调用子类重写的方法:
Person person = new Student()
System.out.println(person.getName())
这将输出 "Student: [name]",因为调用的是子类重写的方法。
另外,在调用重写的方法时,方法中使用的属性也是子类重写的属性。例如,在上面的例子中,如果你在子类中重写了 name 属性,那么调用 getName 方法时将使用子类重写的 name 属性。
在 Java 中,如果一个子类重写了父类的方法,则可以使用父类的引用变量调用子类的重写方法。这种调用方法的机制被称为动态绑定,它允许在运行时根据对象的实际类型来调用方法。
你可以使用父类的引用变量来引用子类的对象,例如:
Person person = new Student()
在这个例子中,person 是一个 Person 类型的引用变量,但它实际上引用了一个 Student 类型的对象。当你使用这个引用变量调用方法时,将调用子类重写的方法,而不是父类中定义的方法。
例如,假设你有一个父类 Person 和一个子类 Student,其中父类有一个方法 getName,子类重写了该方法,如下所示:
class Person {
protected String name
public String getName() {
return name
}
}
class Student extends Person {
@Override
public String getName() {
return "Student: " + name
}
}
然后你可以这样使用父类的引用变量调用子类重写的方法:
Person person = new Student()
System.out.println(person.getName())
这将输出 "Student: [name]",因为调用的是子类重写的方法。
另外,在调用重写的方法时,方法中使用的属性也是子类重写的属性。例如,在上面的例子中
一个方法中的参数是局部变量,只能在本方法内部使用。如果非要在别的方法中使用,可以将你在方法1中输入的整数作为方法1的返回值,在方法2中调用方法1,间接调用输入的整数。publicintmethod1(){Scannerscan=newScanner(System.in)intn=scan.nextInt()returnn}publicvoidmethod2(){intj=this.method1()//调用方法1中的整数}