码农小屋 码农小屋
  • 首页
  • 文章
    • Python
    • 计算机基础
    • C语言
    • Java
    • 数据库
    • Linux
  • 资源
  • 随笔
  • 优秀软件
  • 24h新鲜事
  • 专题
  • 留言板
  • 注册 登录
立即登录
0文章
0评论
0获赞
  • 首页
  • 博客中心
    • 文章
    • 资源
  • 随笔
  • 优秀软件
  • 24h新鲜事
  • 专题
  • 留言板
主页 › 文章 › Java › 简述Java的三大特性——继承、封装、多态
#Java#

简述Java的三大特性——继承、封装、多态

4月前
109 0 1

封装

封装的含义

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

封装的步骤

  1. 修改属性的可见性来限制对属性的访问(修改为private)
  2. 为每个属性创建一队赋值和取值方法,用于对这些属性的访问(创建getter/setter方法)
  3. 在赋值和取值方法中,加入对属性的存取限制(在getter/setter方法中加入属性控制语句)

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

封装的特点

优点

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

缺点

  • 将变量等使用private修饰,或者封装进方法内,增加了访问步骤与难度

代码实例

class user {
    protected String name;  //用户名
    protected int vip;   //会员标识
    protected int create_sum;  //建造总数
	
    //构造方法
    public user(String name,int vip,int create_sum)
    {
	    this.name=name;
	    this.vip=vip;
	    this.create_sum=create_sum;
    }
    //setter()、getter()是该对象对外开发的接口
    public String getName() {
	    return name;
    }
    public void setName(String name) {
	    this.name = name;
    }
    public int getVip() {
	    return vip;
    }
    public void setVip(int vip) {
	    this.vip = vip;
    }
    public int getCreate_sum() {
	    return create_sum;
    }
    public void setCreate_sum(int create_sum) {
	    this.create_sum = create_sum;
}
}

继承

继承的含义

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

继承关键字

继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。

super 与 this 关键字

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

this关键字:指向自己的引用。

继承的特点

  • 子类不能继承父类中访问权限为private的成员变量和方法。
  • 子类可以重写父类的方法,及命名与父类同名的成员变量。
  • 子类可以添加新的方法和属性。
  • java是单继承,不能进行多继承。但是可以继承多层子类(不建议继承超过3层)
  • 子类继承父类,但是对父类的成员变量是无法直接操作,只能通过父类继承过来的setter和getter方法.

继承的优点

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

继承的缺点

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

代码实例

实例可参考这篇文章

模拟抢红包程序

多态

多态的含义

多态指的是对象的多种形态。

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

java程序中定义的引用变量所指向的具体类型和通过该引用类型发出的方法在调用时不确定,该引用变量发出的方法到底调用哪个类的实现的方法,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

多态类型

引用多态:父类引用指向本类对象或父类引用指向子类对象。

方法多态:父类引用相同,但指向对象不同,导致方法不同。(重写部分除外)

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

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

多态的特点

优点

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

多态中的成员特点

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

写在最后

继承、封装、多态这三大特性是Java开发中最基础也是最重要的概念,对这三个概念的理解只能越来越深入。但是同时也要注意自己的心态,要在最简单的问题上耐得住性子,思考和探索,真正内化于心。

1
Mr Gu
相关文章
如果在try里面执行return,那么还会不会执行finally?
Java编程,模拟抢红包程序
Java方法的重载和重写
Java笔记,Java的前世今生
评论 (0)
再想想
Mr Gu管理员
Better late than never.
45文章 1评论 51获赞
文章推荐
ZIP Pro 3 – 文件压缩分享加密管理套件
2月前
Uninstall Tool-专业的软件卸载工具
3月前
Speccy:优秀的硬件检测工具
4月前
CleanMyPC-专为 Windows打造的清理工具
4月前
Internet Downloader Manager-一款专业的Win下载工具
4月前
Wise Care 365-Windows 系统清理和加速工具
4月前
新鲜事
新Mac太牛:在电脑上运行iPhone、iPad的软件、游戏
2月前
自从苹果M1芯片发布之后,使用这颗芯片的Mac电脑,就被大家认为是有史以来最强的Mac,因为这颗小米的芯片,在性能上已经打败了苹果使用的最高端的i9芯 ...[阅读全文]
苹果发布会总结:一个芯片,三款产品!苹果这把棋下得可真深
2月前
北京时间11月11日凌晨2点,苹果在圣何塞召开了本年度最后一场发布会。在这次发布会上,苹果推出了基于ARM架构的全新M1自研处理器。 ...[阅读全文]
荣耀命运落定:救了自己,也救华为
2月前
华为出售荣耀一事终于落槌。 ...[阅读全文]
发布会停不下来,苹果下月发布新Mac
3月前
今年的苹果有些与众不同,往年只开一次秋季发布会,今年在九月十月连开两场。 ...[阅读全文]
iPhone 12 开启 5G 续航锐减,苹果回应
3月前
对于今年的 iPhone 12 来说,除了回归直角边框设计之外,最大的亮点就是 5G 了。 ...[阅读全文]
华为Mate40正式发布
3月前
定位高端旗舰的华为Mate40系列共发布四款新机:华为Mate40(6.5英寸)、华为Mate40 Pro(6.76英寸)、华为Mate40 Pro+ ...[阅读全文]
更多
  • 专题
  • 文章
  • 友情链接
  • 留言板
Copyright © 2020-2021 码农小屋. 苏ICP备20033168号