Java三大特性

Java作为面向对象语言,具有封装、继承、多态三大特性,以及重写和重载功能。本文对这几个概念做一个详细介绍。

Java三特性

封装

所谓封装,即隐藏对象的属性和实现细节, 仅对外公开访问方法,控制在程序中属性的读和写的访问级别。

为什么要封装呢?

封装的目的在于增强安全性和简化编程, 使用者不必了解具体的实现细节,而只要通过对外公开的访问方法,来使用类的成员。

继承

继承,可以理解为 在一个现有类的基础之上,增加新的方法或重写已有方法,从而产生一个新类。所有类都继承自Java.lang.Object。

需要注意的是, 子类不能继承父类中访问权限为 private 的成员变量和方法,也不能继承父类的构造方法。子类可以重写父类的方法,及命名与父类同名的成员变量。

继承有什么好处?

继承给我们的编程带来的好处就是对原有类的复用(重用)。

多态

所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

对于面向对象而已,多态分为编译时多态和运行时多态。其中编辑时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们所说的多态性。

Java实现多态有三个必要条件:继承、重写、向上转型。

  • 继承:在多态中必须存在有继承关系的子类和父类。

  • 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

  • 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。

对于Java而言,它多态的实现机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。

重写与重载

重写

  • 功能: 重写是建立在继承关系上的,它使语言结构更加丰富。在Java的继承中,子类既可以隐藏和访问父类的方法,也可以重写继承来的父类方法。这样方便了子类对父类方法的扩展。
  • 特点: 方法的重写发生在继承类,实现类之中,重写后的方法与原方法有完全相同的返回值类型,方法名,参数个数以及参数类型,但是具体实现不同。
  • 注意事项
    • 方法名必须相同,返回类型必须相同
    • 参数列表必须相同
    • 访问权限不同比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明成protected。
    • 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
    • 构造方法不能被重写
    • 继承过程中如果父类当中的方法抛出异常,那么子类中重写父类的该方法时,也要抛出异常,且抛出的异常不能多于父类抛出的异常,例如父类抛出了IOException那么重写这个方法时就不能抛出Exception。

重载

  • 功能: 让类以统一的方式处理不同类型的一种手段,调用方法时通过传递给他们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。

  • 特点: 重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数的类型相关。

  • 原则: 方法重载时,方法之间需要存在一定的联系,因为这样可以提高程序的可读性,并且我们一般只重载功能相似的方法。

  • 注意事项

    • 重载的方法必须具有不同的参数列表。
    • 不能通过访问权限,返回类型,抛出的异常进行重载。
    • 方法的异常类型和数目不会对重载造成影响。
    • 可以有不同的返回类类型,只要参数列表不同就可以了。
    • 可以有不同的访问修饰符。
    • 可以抛出不同的异常。
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信