「动态绑定java」动态绑定和静态绑定

博主:adminadmin 2023-01-10 04:27:06 1261

本篇文章给大家谈谈动态绑定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的信息别忘了在本站进行查找喔。