Java 多态小记

Java 多态小记

  • 什么是多态

1.面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。
2.多态的定义:指允许不同类的对象对同一消息(方法函数调用)做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用),
3.实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。(父类对象应用指向子类的实例对象)
4.多态的作用:消除类型之间的耦合关系。
5.运行时多态存在的三个必要条件:
一、要有继承(包括接口的实现);
二、要有重写;
三、父类引用指向子类对象。

对静态方法的调用不存在任何动态的分派机制(不存在多态性)。当一个程序调用了一个静态方法,要被调用的方法都是在编译时就被选定的,即调用哪个方法是根据该引用被声明的类型决定的。

注意:静态方法不能被重写为非静态的方法(会编译出错)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class G0526 {
public static void main(String args[]) {
A a = new A();
A b = new B();
a.method1(); //class A method1
b.method1();//class B method1
a.method2(); //class A method2
b.method2();//class A method2
}
}
class A {
public void method1() {
System.out.println("class A method1");
}
public static void method2() {
System.out.println("class A method2");
}
}
class B extends A {
public void method1() {
System.out.println("class B method1");
}
public static void method2() {
System.out.println("class B method2");
}
}