JAVA虚拟机调用一个类方法时,它会基于对象引用的类型(通常在编译时可知)来选择所调用的方法。相反,当虚拟机调用一个实例方法时,它会基于对象实际的类型(只能在运行时得知)来选择所调用的方法,这就是动态绑定,是多态的一种。动态绑定为解决实际的业务问题提供了很大的灵活性,是一种非常优美的机制。 动态绑定具体表现在向上转型上,因为只有在运行时才知道具体运行的是那个实例. 静态绑定 静态绑定发生在编译时期,在程序编译时就绑定的. 使用private或static或final修饰的变量或者方法,使用静态绑定,在Java中变量都是静态绑定的.
static 关键字的访问时不需要某个特定的实例的.如果一个成员被声明为static(静态的),就能够在它的类的任何对象创建之前被访问,为不必引用任何对象 静态代码块 静态代码块优先于构造方法执行,并且静态代码块在类加载时只执行一次 static{ System.out.println(“静态代码块”); }
使用final修饰类,代表该类是不能被继承的.final修饰方法表示该方法不能被重写.final修饰变量,代表该变量是常量,不能被修改.
(1)只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。使用 abstract 修饰符来表示抽象方法和抽象类。 (2)abstract修饰符表示所修饰的类没有完全实现,还不能实例化。如果在类的方法声明中使用abstract修饰符,表明该方法是一个抽象方法,它需要在子类实现。如果一个类包含抽象方法,则这个类也是抽象类,必须使用abstract修饰符,并且不能实例化。 列如:苹果,香蕉,梨子等都是具体的,而老师,学生,车等都是抽象的.用户在开始编程中,用户也并不知道具体的类,比如具体的是那个老师….