Java类的三大特性总结

Java类的三大特性总结类的三大特性包括:封装、继承、多态一、封装1.含义:封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。封装和继承几乎都是为多态而准备的。封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现…

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

类的三大特性包括:封装、继承、多态

一、 封装

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


封装和继承几乎都是为多态而准备的。

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


2.封装的实现

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

属性 (成员变量 ) 随对象存放在堆中

直接通过对象调用属性,修改属性值是不安全的,那怎么办

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

Boolean的get方法默认名为isXXX()

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


3. 封装的优点

3.1 将变化隔离
3.2 便于使用
3.3 提高重用性
3.4 提高安全性

4. 封装的缺点:
将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度!

实例:

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;
 
    }
 
}

二、 继承

继承关键字:extends

**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. 多态存在的前提(多态的三要素)

  A.必须有子类和父类,具有继承或实现(继承)

  B.子类必须重写父类的方法(重写)

  C.父类的引用变量指向子类的对象(向上转型)

2. 多态的优点

  A. 可替换性,多态对一存在的代码具有可替代性

  B. 可扩充性:增加的子类不影响已存在的类的特性的运行和操作

  C. 接口性:多态时超类通过方法签名想子类提供了一个公共的接口,由子类来完善或者覆盖它而实现的

  D. 灵活性:在应用中体现了灵活多样的操作,提高了使用的效率

  E. 简化性: 多态简化对应用软件的代码的编写和修改过程,尤其在处理大量的对象的运算和操作时,这个特点尤为突出和重要

3. 多态的缺点

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

4. 多态中的成员特点:

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

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

(0)
上一篇 2022年7月8日 下午2:00
下一篇 2022年7月8日 下午2:00


相关推荐

  • 最牛营业部——国信泰然九路揭秘

    最牛营业部——国信泰然九路揭秘到深圳 有条路贯穿深圳市区东西城区 世界之窗 欢乐谷 锦绣中华等景点坐落于其两旁 这条路即是被誉为深圳 名片 的深南大道 然而 在这条长达 23 公里的大道上 远比风景更有趣的景象 是道路两边不时出现的证券营业部的招牌 据记者粗略统计 大如国信证券 海通证券 10 46 0 14 1 36 小如西部证券 中山证券 汉唐证券 巨田证券等等 在这里共开设了逾百家营业部 按照深圳当地一位券商人士的话说

    2026年3月26日
    1
  • render函数介绍,以及 render: h => h(App)

    render函数介绍,以及 render: h => h(App)原地址很多朋友对于长篇大论看不下去 有的呢是有接触过这些 所以我们今天吧总结写在前边 需要的朋友可以往下看 nbsp 总结 nbsp 1 nbsp render 方法的实质就是生成 template 模板 nbsp 2 nbsp 通过调用一个方法来生成 而这个方法是通过 render 方法的参数传递给它的 nbsp 3 nbsp 这个方法有三个参数 分别提供标签名 标签相关属性 标签内部的 html 内容 nbsp 4 nbsp 通过这三个参数 可以生成一个完整的木模板备注 rend

    2026年3月18日
    3
  • java文件传输接口

    java文件传输接口跨系统的文件传输 上传 接口在系统开发中经常遇见在不同的系统 如安卓和 web 端 的文件上传 有两种方法 第一种 如果图片比较小可以采用 post 方式将图片转成 base64 的码放在 data 域中 以字符串传参的方式发送到指定的接口取出其值 多个就采用数组 这种一般试用与仅仅图片上传 且图片比较小大约 10kbz 左右太大了 base64 位比较都 http 传输数据太大 导致不能进入指定接口 第二种 采用

    2026年3月19日
    3
  • pycharm terminal 进入虚拟环境_pycharm failed to create virtual

    pycharm terminal 进入虚拟环境_pycharm failed to create virtualPycharmterminal激活虚拟环境,首先需要保证系统完成了conda的安装,并在Powershell中完成虚拟环境的创建(操作创建的虚拟环境名称为deep_pool,这个虚拟环境在接下来的操作中会被提及到)。如果不会创建虚拟环境,可以参考下面这个流程:Ubuntu20.4安装Anaconda以及过程中遇到的问题(已解决)_qq_53258482的博客-CSDN博客在虚拟环境创建完成后,在powershell中输入命令Set-ExecutionPolicy-ScopeCurrentUse

    2022年8月25日
    8
  • C语言结构体(struct)常见使用方法[通俗易懂]

    C语言结构体(struct)常见使用方法[通俗易懂]注意:盗版是不会得到修正和更新的!今天复习一下struct,顺便挖掘一下以前没注意的小细节:基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。(因为C++和C有共通之处,但是在结构体上的某些机制又有所不同,所以后边提了一下,不喜欢可以略过)结构体定义:…

    2022年5月12日
    77
  • get请求的长度限制是多少_url长度限制为多少

    get请求的长度限制是多少_url长度限制为多少Httpget方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制。目前说的get长度有限制,是特定的浏览器及服务器对它的限制。各种浏览器和服务器的最大处理能力如下:IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。Firefox:对Firefox浏览器URL的长度限制为:65536个字符。Safari:URL最大长度限制为80000个字符。Opera:URL最大长度限制为190000个字符。Goog

    2022年8月24日
    41

发表回复

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

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