关于前端:关于-java-的动态绑定机制

52次阅读

共计 1963 个字符,预计需要花费 5 分钟才能阅读完成。

对于 java 的动静绑定机制

聊一聊动静绑定机制,置信看完这篇文章,你会对动静绑定机制有所理解。

网上大多一言概括:

当调用对象的时候,该办法会和该对象的内存地址 / 运行类型绑定。

当调用对象的属性时,没有动静绑定机制,哪里申明就应用哪里。

这里咱们开展来说一说。

动静绑定机制,简略来说,就是在以父类为编译类型,创立子类对象的时候,绑定子类运行类型,当咱们再调用办法的时候,可能有序的寻找办法,实现办法的有序调用。

动静绑定机制会呈现在多态中,多态是 Java 的重要的三个属性之一,动静绑定机制就是建设在,封装,多态,继承的根底上延长出的。

要理解动静绑定机制,首相要把对象的多态与继承搞明确,还有编译类型,运行类型,这是前提。网上都有具体的解说,这里不做延长。

废话不多书,间接上代码演示解说,具体的解说会在代码的正文当中。

首先咱们要 创立父类 Person 类

// 创立父类
public class Person {
    // 简略的创立两个属性
    private String name;
    private int age;

    // 创立行为办法,办法中调用创立的 say 办法
    public void haviours(){say();
    }
    // 创立办法
    public void say(){System.out.println("我是人类!!!");
    }

}

创立子类 Student

// 创立子类
public class Student extends Person {
    // 创立学生的属性
    private int  score;
    // 重写行为
    public void haviours(){say();
    }
    // 重写 say 办法
    public void say(){System.out.println("我是学生!!!");
    }
}

首先咱们对 say 办法进行调用。

public class Demo01 {public static void main(String[] args) {
        // 创立学生
        Person student = new Student();
        // 调用学生的 say()办法,因为咱们的编译类型是 Person 类,而运行类型是 Student 类,而动静绑定机制是绑定运行类型。// 所以,当咱们调用 say()办法时,是调用 Student 类的 say()办法
        student.say();// 返回“我是学生”//、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、// 如果咱们将 student 类的 say()办法登记,他寻找 student 类的 say 办法无果后,会再向它的父类调用 say 办法。返回我是人类, 成果等同于

    }
}

然而,重点来了。。。。。。。。。。。。

如果咱们调用的是 haviours 办法,那么他的办法是调用什么呢

public class Demo02 {public static void main(String[] args) {
        // 创立学生
        Person student = new Student();
        // 调用学生的 haviours 办法,因为咱们的编译类型是 Person 类,而运行类型是 Student 类,而动静绑定机制是绑定运行类型。// 所以,当咱们调用 haviours()办法时,该对象绑定的是 Student 类,所以是调用 Student 类的 say()办法
        student.haviours();// 返回我是学生!!!}
}

然而,还有人可能会有疑难,如果 Student 类中的 havious 办法被正文掉呢,你是不是会想。子类 Student 中没有 havious 办法,调用父类的 havious 办法,而后 havious 调用父类的 say 办法???

道歉了,他调用的是子类 Student 的 Say 办法

public class Demo03 {public static void main(String[] args) {
        // 创立学生
        Person student = new Student();
        // 调用学生的 haviours 办法,因为咱们的编译类型是 Person 类,而运行类型是 Student 类,而动静绑定机制是绑定运行类型。// 所以,当咱们调用 haviours()办法时,因为子类没有 havious 办法,调用父类的 havious 办法,在父类的 havious 中,调用 say 办法,这时,动静绑定机制是绑定运行类型。该对象绑定的是 Student 类,所以是调用 Student 类的 say()办法
        student.haviours();// 返回我是学生!!!}
}

介绍完动静邦迪机制对办法的绑定,接下来说一说对属性的影响。

当调用对象的属性时,没有动静绑定机制,哪里申明就应用哪里。这句话非常容易了解。

也就是动静绑定机制对属性没有影响,释怀调用。

动静绑定机制(完)。

结语:因为在网上查找相干的动静绑定机制时,看到没有动静绑定的具体解说,而这也是一个小难点,所以翻阅书籍,进行了学习,并进行总结,世界上本没有路,走的人多了,也便有了路。

正文完
 0