美文网首页
Java系列之 - 面向对象三大特征

Java系列之 - 面向对象三大特征

作者: SupKing_a520 | 来源:发表于2020-03-06 10:29 被阅读0次

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

一、封装

首先,属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。

  1. 封装:
    封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。
  2. 封装的好处:
  • 实现了专业的分工
  • 良好的封装能够减少耦合
  • 类内部的结构能够自由修改
  • 可以对成员进行更精确的控制
  • 隐藏信息,实现细节
  1. 封装的步骤:
  • 修改属性的可见性来限制对属性的访问
  • 为每个属性创建一对赋值和取值方法,用于对这些属性的访问
  • 在赋值和取值方法中,加入对属性的存取限制

二、继承

  1. Java继承
  • Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
  • JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,父类是子类的一般化,子类是父类的特化(具体化)。
  1. Java继承的特征
  • 继承关系是传递的。若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法。
  • 继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。
  • 继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。
  1. 结果:
    继承后子类自动拥有了父类的属性和方法,但特别注意的是,父类的私有属性和构造方法并不能被继承。

三、多态

  1. 多态的定义:
    指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
  2. 实现多态的技术称为:
    动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
  3. 多态的作用:
    消除类型之间的耦合关系。
  4. 多态存在的三个必要条件
  • 要有继承;
  • 要有重写;
  • 父类引用指向子类对象。
  1. 好处:
  • 可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
  • 可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。
  • 接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
  • 灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
  • 简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

四、例子

比如你是一个酒神,对酒情有独钟。某日回家发现桌上有几个杯子里面都装了白酒,从外面看我们是不可能知道这是些什么酒,只有喝了之后才能够猜出来是何种酒。你一喝,这是剑南春、再喝这是五粮液、再喝这是酒鬼酒….在这里我们可以描述成如下:

酒 a = 剑南春
酒 b = 五粮液
酒 c = 酒鬼酒
…
这里所表现的的就是多态。
public class Wine {
    public void fun1(){
        System.out.println("Wine 的Fun.....");
        fun2();
    }
    public void fun2(){
        System.out.println("Wine 的Fun2...");
    }
}

public class JNC extends Wine{
    /**
     * 子类重载父类方法,父类中不存在该方法,向上转型后,父类是不能引用该方法的
    */
    public void fun1(String a){
        System.out.println("JNC 的 Fun1...");
        fun2();
    }
    
    /**
     * 子类重写父类方,指向子类的父类引用调用fun2时,必定是调用该方法
     */
    public void fun2(){
        System.out.println("JNC 的Fun2...");
    }
}

 public class Test {
    public static void main(String[] args) {
        Wine a = new JNC();
        a.fun1();
    }
}

-------------------------------------------------
Output:Wine 的Fun.....JNC 的Fun2...

五、总结:

指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。

相关文章

  • Java进阶 | 从整体上观察面向对象

    一、面向对象 面向对象是Java编程中最核心的思想,基本特征:继承、封装、多态。 1、特征之封装 将结构、数据、操...

  • Java进阶 | 从整体上观察面向对象

    一、面向对象 面向对象是Java编程中最核心的思想,基本特征:继承、封装、多态。 1、特征之封装 将结构、数据、操...

  • Java系列之 - 面向对象三大特征

    面向对象的三大特征:封装、继承、多态 一、封装 首先,属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同...

  • Java面试题基础知识篇

    1Java 基础知识面向对象→ 什么是面向对象面向对象、面向过程 略面向对象的三大基本特征和五大基本原则答java...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • Java 面向对象特征

    java面向对象的三大特征是什么? 那就是封装、继承、多态。 但说到面向对象,还有一个很主要的特征就是抽象。 封装...

  • Java面向对象特征

    封装 private int age(私有 类名称 属性名称)。特别注意的是数组也属于java类。private ...

  • JAVA面试题-笔试题(1)书目录

    笔试题 JAVA面试题之面向对象三大特征 JAVA面试题之面向对象五大基本原则 JAVA面试题之面向对象程序设计的...

  • java 面试题(1)

    1:java 面向对象 面向对象的特征有哪些方面? 抽象,继承,封装:多态性。 抽象:抽象是将一类对象的共同特征总...

  • JAVA面试题全集(上)

    java面试题面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总...

网友评论

      本文标题:Java系列之 - 面向对象三大特征

      本文链接:https://www.haomeiwen.com/subject/bryvrhtx.html