Java面向对象的三大特性:封装、继承、多态

封装

概述

  面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

原则

  将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。

好处

  1. 只能通过规定的方法访问数据。
  2. 隐藏类的实例细节,方便修改和实现。

优化

this关键字

  this代表所在类的当前对象的引用(地址值),即对象自己的引用。
  记住︰方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。

构造方法

  当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。
  小贴士:无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。

继承

定义

  继承就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。

好处

  1. 提高代码的复用性。
  2. 类与类之间产生了关系,是多态的前提。

特点

  1. Java只支持单继承,不支持多继承
  2. Java支持多层继承(继承体系)。
  3. 子类和父类是一种相对的概念。

super和this的含义

super

  代表父类的存储空间标识(可以理解为父亲的引用)。

this

  代表当前对象的引用(谁调用就代表谁)。

  子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用super关键字,修饰父类成员变量,类似于之前学过的this。

小贴士

  父类中的成员变量是非私有的,子类中可以直接访问。若父类中的成员变量私有了,子类是不能直接访问的。通常编码时,我们遵循封装的原则,使用private修饰成员变量,那么访问父类的私有成员变量可以在父类中提供公共的getXxx方法和setXxx方法。

继承后的特点——构造方法

  构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用。

继承的初始化顺序

  • 父类空间优先于子类对象产生
  • 父类对象属性初始化---->父类对象构造方法---->子类对象属性初始化--->子类对象构造方法
  • 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。理解图解如下:

多态

 概念

  • 同一个引用类型,使用不同的实例,执行不同的操作。
  • 方法重写是实现多态的基础。
  • 将父类对象应用于子类对象的特征就是面向对象编程中的多态性的体现

优点

  • 以处理种类繁多的已存在的类及其相关类,这样既降低了维护难度,又节省了时间。

实现多态的三个必要条件

  1. 继承
  2. 重写
  3. 父类引用指向子类对象
posted @ 2020-11-02 21:15  A_xiba  阅读(94)  评论(0编辑  收藏  举报