「动态绑定java」动态绑定和静态绑定
本篇文章给大家谈谈动态绑定java,以及动态绑定和静态绑定对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java 中什么是动态绑定!
动态绑定只是叫法不同,你可以理解为多态!
例如,有一个抽像fruit水果父类,其中定义了一个方法抽像eat方法,而apple继承fruit并实现fruit的eat方法,而banana继承fruit并实现fruit的eat方法,
外部调用代码如下:
public void do(Fruit fruit){
fruit.eat();//这里就是动态绑定只有在运行时才知道调用哪一个子类的eat()
}
main(){
do(new Apple());
do(new Banana());
}
Java上转型变量调用子类重写的方法时,方法中调用的属性是被隐藏的还是子类重写的变量?
在 Java 中,当使用父类的引用变量调用子类的重写方法时,被调用的方法是子类重写的方法。这是因为在 Java 中,方法的调用是在运行时进行的,称为动态绑定,它允许在运行时根据对象的实际类型来调用方法。
举个例子,假设你有一个父类 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]",因为调用的是子类重写的方法。
另外,在调用重写的方法时,方法中使用的属性也是子类重写的属性。例如,在上面的例子中
java动态方法绑定好处
动态方法绑定:
指Java虚拟机执行对象的某一方法时, 会根据该对象的“真正”的类,执行其中的方法(详情请了解子类父类,重写等知识)
好处:
支持多态, 例如一个列表list中存有Chiness English, 其父类均为Person, 对于下面的语句:
for (Person person: list)
person.sayHello();
当执行sayHello的时候, 会根据person具体属于Chiness 或English 而执行相应的sayHello方法。
这也是反映出动态方法绑定对多态的支持。
(欢迎补充)
动态绑定java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于动态绑定和静态绑定、动态绑定java的信息别忘了在本站进行查找喔。