动态绑定

来源:互联网 发布:宝宝拍照换装的软件 编辑:程序博客网 时间:2024/05/16 05:11


1 子类的方法将父类中的覆盖了,所以不会进入父类,而是根据实际类型找到对应的类,执行其相应的方法,子类将父类方法进行了重载

注意:


次动态绑定适用的是父类所固有的方法,子类对父类固有方法进行重载,如object中的toString()方法,例如A11—6

但是如果是用户自定义的方法,则是先调用父类中的方法,例如Faculty

执行子类方法

package chapter11;

public class A11_6 {

 public static void main(String[] args) {
  m(new GraduateStudent());
  m(new Student());
  m(new Person1());
  m(new Object());
 }
 public static void m(Object x)
 {
  System.out.println(x.toString());
 }
 
}
 class GraduateStudent extends Student
 {
  
 }
 class Student extends Person1
 {
  public String toString()
  {
   return "Student";
  }
 }
 class Person1 extends Object
 {
  public String toString()
  {
   return "Person";
  }
 }


先调用父类的

package chapter11;

public class Faculty extends Employee {

 public static void main(String[] args) {
  new Faculty();

 }
 public Faculty()
 {
  System.out.println("(4)Perfors faculty tasks");
 }

}

class Employee extends Person
{
 public Employee()
 {
  this("(2)this is a bad news!");
  System.out.println("(3)this is a good news!");
 }
 public Employee(String s)
 {
  System.out.println(s);
 }
}
class Person{
 public Person()
 {
  System.out.println("(1)we should ignore some bad news!");
 }
 
}

2 对象转换的应用

对象成员访问运算符(.)优先于类型转换运算符,必须使用()保证点运算符之前进行转换,例如

((Circle)object).getArea());




0 0