java面向对象的三大特性

java面向对象的三大特性java面向对象的三大特性包括:封装、继承、多态一、封装1.含义:封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。2.封装的实现需要修改属性的访问控制符(修改为private);创建getter/setter方

大家好,又见面了,我是你们的朋友全栈君。

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

一、 封装

1.含义:封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。

封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。

2.封装的实现

  1. 需要修改属性的访问控制符(修改为private);
  2. 创建getter/setter方法(用于属性的读写);
  3. 在getter/setter方法中加入属性控制语句(用于判断属性值的合法性);

为了实现良好的封装,我们通常将类的成员变量声明为private ,为了能够在外部使用,可以通过定义public方法来对这个变量来访问。对一个变量的操作,一般有读取和赋值2个操作,我们分别定义2个方法来实现这2个操作,一个是getXX()(XX表示要访问的成员变量的名字)用来读取这个成员变量,另一个是 setXX() 用来对这个变量赋值

把成员变量设置为私有的,只能在本类中使用,所以属性也叫全局变量

3. 封装的优点

  1. 将变化隔离
  2. 便于使用
  3. 提高重用性
  4. 提高安全性

封装实例

public class People { 
   
 
    /* * 对属性的封装一个人的姓名、年龄 */
 
    private String name;
 
    private int age;
    /* * setter()、getter()是该对象对外开发的接口 */
 
    public String getName() { 
   
 
        return name;
 
    }
    
    public void setName(String name) { 
   
 
        this.name = name;
 
    }
 
    public int getAge() { 
   
 
        return age;
 
    }
    
    public void setAge(int age) { 
   
 
        this.age = age;
 
    }
 
}

二、 继承

继承关键字:extens

1. 含义
在这里插入图片描述

多个类具有共同的属性(成员变量)与行为(成员方法)的时候,将这些共同的部分抽取出来定义到一个公共的类中,其他及各类可以与这个公共的类形成继承关系,从而在多个类中不需要重 复定义公共部分!这个公共的类就是父类,也称为超类或者基类,其他的类就是子类。子类可以直接访问父类的非私有化成员变量,访问父类的私有化成员变量可以使用super.get() 方法。

简单的说继承是类与类的一种关系,比较像集合中的从属于关系。比如说,狗属于动物。就可以看成狗类继承了动物类,那么狗类就是动物类的子类(派生类),动物类就是狗类的父类(基类)。在Java中是单继承的,也就是说一个子类只有一个父类。

2. 继承的特点:

(1) 子类比父类强大
(2)java是单继承,不能进行多继承。但是可以继承多层子类(不建议继承超过3层
(3)子类继承父类,但是对父类的成员变量是无法直接操作,只能通过父类继承过来的setter和getter方法.

3. 继承的优点:

(1)减少代码量,能很好的提高复用率。
(2)使类与类之间存在继承关系,是实现多态操作的前提。

4. 继承的缺点

继承使得多个类之间具有了子父类关系,当一个类存在多个子类的时候,如果父类发生变化,那么这些子类会跟着一同变化,造成类与类之间的“强耦合”关系!

5.继承注意点

(1) 不要仅仅为了获取某个类的某个功能而去继承这个类
(2)类与类之间要存在所属关系,不能够随意继承

6.何时使用继承

(1)具有公共的属性与行为操作的时候,提高复用性
(2)具有is–a的所属关系的类与类之间

7. 结论:

(1)执行构造方法创建对象完成对象的初始化时,先执行父类的构造,完成父类的初始化,再执行本类的初始化工作。

(2)第一次创建Phone(父)类,是直接继承Object,而Object是jdk提供的工具类,自然不会有属性,所以Object类只提供了无参的构造,在执行Phone方法时,无论是无参还是有参都会先执行父类Object的无参构造。

(3)但是对于Phone的子类Mobile,必须也要有自己的构造方法,由于构造执行的特性,对于无参构造,先执行了Phone的无参构造,对于有参构造,则先执行父类Phone的有参,然后才执行本类属性sex的初始化。

(4)构造方法constructor中,无论是否显式还是隐式调用super(),子类在创建对象调用时都会执行super();

(5)显式调用构造是在需要通过父类的带参构造来完成子类的带参构造。例如Mobile类带参构造中显示调用的Super(brand,price,service)

(6)对于父类私有的属性,即使子类继承,但是在test.java中,子类是无法直接访问的,在制定子类的带参构造方法时,只能通过调用父类的带参构造来完成。对于父类非私有的属性,子类对象可以直接调用。

三、 多态

含义:多态指的是对象的多种形态。
在这里插入图片描述

多态有两种:引用多态和方法多态。继承是多态的实现基础。

java程序中定义的引用变量所指向的具体类型和通过该引用类型发出的方法在调用时不确定,该引用变量发出的方法到底调用哪个类的实现的方法,必须在程序运行期间才能决定,这就是多态。

多态存在的前提(多态的三要素)

  1. 必须有子类和父类,具有继承或实现(继承)
  2. 子类必须重写父类的方法(重写)
  3. 父类的引用变量指向子类的对象(向上转型)

多态的优点

  1. 可替换性,多态对一存在的代码具有可替代性
  2. 可扩充性:增加的子类不影响已存在的类的特性的运行和操作
  3. 接口性:多态时超类通过方法签名想子类提供了一个公共的接口,由子类来完善或者覆盖它而实现的
  4. 灵活性:在应用中体现了灵活多样的操作,提高了使用的效率
  5. 简化性: 多态简化对应用软件的代码的编写和修改过程,尤其在处理大量的对象的运算和操作时,这个特点尤为突出和重要

多态的缺点

只能使用父类的引用访问父类的成员

多态中的成员特点

成员变量:编译与运行时期都看父类!
成员方法:编译时期看父类,运行时期看子类

本文章为自己学习使用,部分内容转自大佬

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156224.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 论JSP数据库连接池的必要性

    论JSP数据库连接池的必要性

    2021年7月26日
    57
  • Java html转word_html文件转换成excel

    Java html转word_html文件转换成excel使用aspose的原因:1.使用简单,功能强大2.可以自动将html中可以访问的img标签存入word文档中3.可以轻松实现HTML中的样式转换到word文档中首先使用的jar包是:aspose-words-14.9.0-jdk16.jar这个可以在网上找到激活成功教程版以下是代码:1:读取asposelicensepublicstaticbooleangetAsposeWordLice

    2022年10月10日
    6
  • pcm设备相关代码解析

    pcm设备相关代码解析介绍并解析了 tinyalsa 中与 pcm 设备相关的部分

    2025年9月4日
    3
  • pycharm怎么创建虚拟环境_pycharm选择运行环境

    pycharm怎么创建虚拟环境_pycharm选择运行环境配置虚拟环境的必要性1、保持项目的独立性。为每一个项目建立一个独立的运行环境,不与其他项目之间产生环境冲突。(比如其他项目加载或删除依赖环境软件时,互不影响)通俗一点就是,每人一个单间,大家在自己的房间内可以各干各的。2、提升项目开机加载速度。在独立性的前提下,虚拟环境可以选择继承已有的公共环境中的依赖包,也可以完全新建一个空间,也可以将自己的依赖环境共享给其他项目。总之,保证每个项目的虚…

    2022年8月28日
    4
  • python操作Elasticsearch数据库[通俗易懂]

    python操作Elasticsearch数据库[通俗易懂]fromelasticsearchimportElasticsearch#连接数据库es=Elasticsearch([{‘host’:”localhost”,’port’:9200}])#创建索引es.indices.create(index=’es_python’,ignore=400)#插入单条数据es.index(index=”es_python”,doc_type=…

    2022年5月1日
    60
  • SQLite下载、安装和使用并Qt链接SQLIte全部教程(windows)

    SQLite下载、安装和使用并Qt链接SQLIte全部教程(windows)第一步 下载 SQLIte 下载地址 https www sqlite org download html 下载两个内容 sqlite dll win64 x64 3360000 zipsqlite tools win32 x86 3360000 zip 下载完后直接解压 放到到一个文件夹下 这个文件夹可以随便在哪里 如下图 第二步 使用 SQLite 网上好多教程都是到这一步就配置环境变量 不知道他们脑子咋想的 轻量级数据库 SQLIte 本来就应该随着项目到处走 直接在解压且合并后

    2025年7月21日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号