说一说 Java 面向对象三大特性?
Java 面向对象三大特性包括:封装、继承和多态。
- 封装:将对象的属性和方法结合起来,并隐藏内部的实现细节。只暴露出一个接口供外部访问。通常由访问修饰符 private、protected、public 来控制权限,以实现封装。
- 继承:一个子类可以继承一个父类的属性和方法。子类可以重用父类的代码,并且可以新增方法或者修改重写父类的方法。增强了代码的可复用性和可扩展性。Java 支持单继承,一个类只能继承一个父类。
- 多态:父类引用可以指向子类对象。允许不同的类的对象对同一消息作出响应。但具体的行为会根据对象的实际类型而有所不同。这通常通过方法重载和重写实现。
说一说你对 Java 多态的理解?
把一个子类对象直接赋值给父类引用变量,运行时调用引用变量的方法,其方法的行为总是表现出子类方法的行为特征,而不是父类方法的行为特征。即同一类型的变量在调用同一方法时,表现出不同的行为特征,这就是多态。
多态包括编译时多态和运行时多态。
编译时多态是在编译时就已经确定了调用的方法。这是由方法的重载实现的。编译器会根据方法参数的个数、类型或顺序调用合适的方法。
运行时多态是在运行时根据对象实际的类型来确定调用的方法。这是由方法的重写实现。运行时多态依赖与对象的实际类型,而不是引用类型。
Java 重载和重写的区别?
重载和重写是实现 Java 多态的两种不同的方式。
重载是编译时多态。它允许一个类有多个同名方法,但是这些方法的参数列表不同,可以有不同的返回类型和访问权限。通过静态绑定实现。
重写是运行时多态。它允许子类重新定义父类的方法。但是方法的名称、参数列表和返回类型都必须相同。重写的方法的访问级别要大于被重写的方法,返回类型和抛出异常的范围要小于被重写的方法。JVM 在运行时会根据对象的实际类型来确定调用哪个方法。
总结一下,重载是运行一个类有多个同名方法,重写是允许子类提供特定于其父类的行为实现。

被折叠的 条评论
为什么被折叠?



