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

一、封装

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

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

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

2.封装的实现

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

3. 封装的优点

        3.1将变化隔离

        3.2便于使用

        3.3提高重用性

        3.4提高安全性

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

实例

二、继承

继承关键字: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. 只能使用父类的引用访问父类的成员

1

4. 多态中的成员特点:

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

Java类的三大特性相关推荐

  1. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  2. Java基础篇——三大特性(封装)

    Java三大特性我会用自己理解给大家一一介绍,有兴趣的可以关注一下,可以让你学到一些基础但是又非常实用的东西,基本上都是自己的一些理解和实践结果,对于新手来说可以避免走弯路(后期会出Java的其他重要 ...

  3. Java语言的三大特性

    Java语言的三大特性即是:封装.继承.多态 封装: 首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作.封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 1 ...

  4. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  5. Java基础篇——三大特性(多态)

    这是Java三大特性的最后一篇文章,本篇主要讲解多态的概念和应用.如果是对Java有兴趣的小伙伴可以关注一下,后续会推出一系列的Java基础和进阶的总结(或者说是个人的理解吧!)可以让你学到一些基础但 ...

  6. 类的 三大特性 封装,继承,多态 overload与override的区别

    OOP三大特性:封装,继承,多态 封装的目的:为了让类更安全 封装的做法: 1.类里面的成员变量做为private 2.使用成员方法来间接访问成员变量 3.在该方法里面加限制条件 php类里面不允许出 ...

  7. java面向对象:三大特性:封装,继承,多态

    -----------------------------------面向对象:三大特性:封装,继承,多态 ----------------------------------- 1.什么是类?什么是 ...

  8. PYTHON 类的三大特性

    三大特性:封装.继承.多态 成员: 字段 静态字段(每个对象都有一份).普通字段(每个对象都不同的数据) 方法 静态方法(无需使用对象封装的内容)@staticmethod.类方法(会自动加当前类的类 ...

  9. 一文带你了解java面向对象的三大特性:继承、封装、多态

    文章目录 1.继承 2.封装 3.多态 本篇文章以同步到:https://www.bithachi.cn/posts/c72fe2cc.html 1.继承 继承是类与类的一种关系,子类拥有父类的所有( ...

  10. java 类的高级特性_java程序-类的高级特性

    创建Employee类,在类中定义三个属性:编号,姓名,年龄,然后在构造方法里初始化这三个属性,最后在实现接口中的定义的CompareTo方法,将对象按编号升序排列. 代码如下:(程序可能有些错误,方 ...

最新文章

  1. 记录一个比较完整的python项目分析架构
  2. LoadRunner的参数化功能分享
  3. [Medical Image Processing] 1. Introduction
  4. JQuery: 实现筛选功能
  5. java高并发(八)不可变对象
  6. 【AWSL】之Linux账号和权限管理(/etc/passwd、/etc/shadow、useradd、passwd、usermod、groupadd、gpasswd...chmod、chown)
  7. PostgreSQL-PL/pgSQL
  8. 写一个函数返回参数二进制中 1 的个数(三种方法)
  9. X264码率控制流程分析 (转)
  10. HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)
  11. Tomcat性能优化总结
  12. 开机启动项_开机时出现“checking media presence”
  13. DaVinci Resolve Studio 17.4 for Mac(达芬奇剪辑调色软件)
  14. Linux必备命令 - 常用命令集
  15. 树的遍历 ALDS1_7_C: Tree Walk
  16. e当前登录环境异常。为了你的帐号安全,暂时不能登录web微信。你可以通过Windows
  17. 千年db服务器注册,千年服务器架设说明.doc
  18. 基于SpringBoot+微信小程序的壁纸小程序
  19. 一个 JDBC 实现对 mysql 进行分页查询的 实例
  20. PDPS软件:机器人固定点焊虚拟仿真操作方法

热门文章

  1. java正则表达式 and_Java正则表达式详解
  2. Qt视频直播软件--项目实战(Day6)
  3. 工业机器人远程监控系统方案
  4. 适合小白的几个入门级Python ocr识别库
  5. Java使用融云SDK,推送聊天信息
  6. 2022年Python最新面试题汇总及答案
  7. 自己仿的一个网页,比较适合小白入门
  8. mongoVue 对mongodb的操作
  9. qt使用 iostream 头文件
  10. kettle基础教程-kettle9教程