JAVA面向对象(三)

第三章  封装与继承


目录

第三章  封装与继承

1.1.封装

1.2.包

1.3.访问权限控制

1.4.static修饰符

1.4.1.成员变量

1.4.2.成员方法

1.4.3.代码块

总结


内容仅供学习交流,如有问题请留言或私信!!!!!

有空您就点点赞


1.1.封装

        将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,是面向对象三大特征之一。

        封装的原则:把所有的属性藏起来;把尽可能多的东西藏起来,对外提供便捷的接口。

如何实现封装:

 封装的好处

  • 便于使用者正确使用系统,防止错误修改属性
  • 有助于系统之间的松耦合,提高系统独立性
  • 提高软件的可重用性
  • 降低了构建大型系统的风险


1.2.包

       :允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件。

        作用:防止命名冲突,区分名字相同的类;有助于实施访问控制权限

命名规范:

  • 包名由小写字母组成,不能以原点开头或结尾
    • package mypackage
  • 包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名
    • package net.javagroup.mypackage;
  • 包名后续部分依不同机构内部的规范不同而不同
    • package net.javagroup.research.powerproject;

包导入语句:为了使用不在同一包中的类,需要在java程序中使用import关键字导入这个类。

语法:        

import 包名.类名;

eg:

import java.util.Scanner;//导入java.util包中的Scanner

import java.util.*;//导入java.util包中的所有

注意事项:

  1.  一个类同时引用了两个来自不同包的同名类
    1. 必须通过完整类名来区分

    eg:已创建两个dog类

            import cn.com.Dog

            import cn.com.oop.Dog

    在main函数中调用时,只能通过类的完整限定名来区分

            cn.com.Dog dog1 = new cn.com.Dog();

            cn.com.oop.Dog dog2 = new cn.com.oop.Dog();

  2. 每个包都是独立的,顶层包不会包含子包的类
  3. package和import的顺序是固定的
    1. package必须位于(代码的)第一行
    2. 只允许有一个package语句
    3. 其次是import
    4. 接着是类的声明

1.3.访问权限控制

  • 类的访问控制
    • public修饰符:公有访问级别
    • 默认修饰符:包级私有访问级别(本包内可以访问,不同包内无法访问)
  • 类成员的访问控制

                    作用域

修饰符

同一个类中

同一个包中

子类中

任何地方

private

可以

不可以

不可以

不可以

默认修饰符

可以

可以

不可以

不可以

protected

可以

可以

可以

不可以

public

可以

可以

可以

可以


1.4.static修饰符

static可以用来修饰:

  • 1.4.1.成员变量

    • 静态变量,可以直接通过类名访问

类的成员变量包括:

  • 类变量(静态变量):
    • 被static修饰的变量
    • 在内存中只有一个拷贝
    • 类内部,可以在任何方法内直接访问静态变量
    • 其它类中,可以直接通过类名访问
  • 实例变量
    • 没有被static修饰的变量
    • 每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响
    • 通过访问

 static变量的作用:

(1)能被类的所有实例共享,可作为实例之间进行交流的共享数据

(2)如果类的所有实例都包含一个相同的常量属性,可把这个属性定义为静态常量类型,从而节省内存空间


  • 1.4.2.成员方法

    • 静态方法,可以直接通过类名访问

static方法:

  • 静态方法:可以直接通过类名访问
    • 静态方法中不能使用this和super
    • 不能直接访问所属类的实例变量和实例方法
    • 可直接访问类的静态变量和静态方法
  • 实例方法:通过实例访问
    • 可以直接访问所属类的静态变量、静态方法、实例变量和实例方法;不可以定义static变量
  • 静态方法必须被实现
    • main()就是最常用的的静态方法

  • 1.4.3.代码块

    • 静态代码块,当Java虚拟机加载类时,就会执行该代码块

        static代码块:

  • JVM加载类时,加载静态代码块
    • 如果有多个静态块,按顺序加载
    • 每个静态代码块只会被执行一次

2.1.继承

        使用继承修改后的好处:方便修改代码、减少代码量。

如何使用继承:

  • 使用继承
    • 编写父类

      [访问修饰符] class Pet {

          //公共的属性和方法

      }

    • 编写子类,继承父类

      [访问修饰符] class Dog extends Pet {

          //子类特有的属性和方法

      }


总结

        练习:这里写练习及链接等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/27513.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机组成与体系结构Ⅰ】知识点整理

第一章 计算机系统概论 1.1 从源文件到可执行文件 .c源程序、.i源程序、.s汇编语言程序、.o可重定位目标程序、可执行目标程序;后两个为二进制,前面为文本 1.2 可执行文件的启动和执行 冯诺依曼结构计算机模型的5大基本部件:运算器、控制…

技巧:win10的另一种美化字体的方式,使用noMeiryoUI

目录 1. 前提2. 字体选择3. 查看已经安装的字体并查看效果4. 安装软件修改系统字体5. 修改浏览器字体 1. 前提 21年的时候写了一篇文章,《Windows10下美化字体,达到类似mac的效果》,当时还很迷恋macType这个软件的使用,觉得好牛逼…

java异常 | 处理规范、全局异常、Error处理

文章目录 🚃异常类型🎠显示声明异常:①:try-catch②方法签名 🚃异常处理规范⚓️异常包装⚓️异常传递⚓️异常日志记录⚓️异常处理的最佳实践 🚃全局异常处理⛵️优点:⛵️代码示例&#xff1…

YOLOv7训练自定义数据集

使用YOLOv7做对比实验,需要重新部署一下YOLO环境,并将COCO格式数据集转换为YOLO格式 博主的COCO数据集是由WiderPerson数据集转换来的,并且做了一些处理。 环境 Ubuntu18.0 CUDA11.2 NVIDIA T4 项目部署 下载项目: git clone…

PureComponent和Component的区别和底层处理机制

PureComponent和Component都是React中的组件类,但它们在实现细节和使用上有些差别。 Component是React中定义组件的基类,它的shouldComponentUpdate方法默认返回true,也就是说,每次调用setState或forceUpdate方法都会引发组件重新…

算法提高-图论-单源最短路的综合应用

单源最短路的综合应用 单源最短路的综合应用AcWing 1135. 新年好AcWing 340. 通信线路AcWing 342. 道路与航线AcWing 341. 最优贸易 单源最短路的综合应用 AcWing 1135. 新年好 多次dijkstra求每个点到其它点的最短距离, 此时相当于建好了一张图,每个点…

实验篇(7.2) 09. 通过安全隧道走对方宽带上网 (FortiClient-IPsec) ❀ 远程访问

【简介】要想所有的流量都走安全隧道,就需要禁用隧道分割。这样上网流量也会通过隧道到达远端防火墙,再通过远端防火墙的宽带接口去到互联网。我们来看看FortiClient客户端用IPsec VPN是如何实现的。 实验要求与环境 OldMei集团深圳总部防火墙有两条宽带…

【运筹优化】最短路算法之A星算法 + Java代码实现

文章目录 一、A星算法简介二、A星算法思想三、A星算法 java代码四、测试 一、A星算法简介 A*算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。 二、A星算…

javaScript蓝桥杯-----天气趋势 A

目录 一、介绍二、准备三、目标四、代码五、完成 一、介绍 日常生活中,气象数据对于人们的生活具有非常重要的意义,数据的表现形式多种多样,使用图表进行展示使数据在呈现上更加直观。 本题请实现一个 Y 城 2022 年的天气趋势图。 二、准备…

100天精通Python(可视化篇)——第88天:全网最全Seaborn库常用绘图3万字总结(参数说明+案例实战)

文章目录 一、Seaborn介绍1.1 介绍1.2 安装1.3 风格设置1.3.1 style(风格)1.3.2 context(环境设置) 1.4 调色盘设置1.5 数据集下载 二、Relational plots(关系图)2.1 scatterplot(散点图&#x…

SpringSecurity 总结

SpringSecurity 总结 第一章 权限管理 权限管理SpringSecurity 简介整体架构 权限管理: 实现: "对用户访问系统的控制"(身份认证) , 按照 "安全规则"或者 "安全策略" (对已经认证的用户进行授权) 控制,用…

K8s in Action 阅读笔记——【13】Securing cluster nodes and the network

K8s in Action 阅读笔记——【13】Securing cluster nodes and the network 13.1 Using the host node’s namespaces in a pod Pod中的容器通常在不同的Linux名称空间下运行,这使得它们的进程与其他容器或节点默认名称空间下运行的进程隔离开来。 例如&#xff…

【计算机组成与体系结构Ⅰ】课程设计——基于Logisim的模型计算机设计

基于Logisim的模型计算机设计 一、实验目的 基于Logisim软件,根据一个模型指令系统,在逐步学习和了解计算机组成各部分逻辑组成和各部分互联的基础上,深入理解课程中的知识点,利用此软件设计并实现一个模拟的8位模型计算机原型。…

Python爬取影评并进行情感分析和数据可视化

Python爬取影评并进行情感分析和数据可视化 文章目录 Python爬取影评并进行情感分析和数据可视化一、引言二、使用requestsBeautifulSoup进行影评的爬取1、分析界面元素2、编写代码 三、情感分析1、数据预处理2、情感分析3、数据可视化 一、引言 前几天出了《航海王&#xff1…

delete 清空表之后,磁盘空间未发生变化?

上篇文章结尾和小伙伴们留了一个小问题,就是关于 optimize table 命令,今天我想花点时间再来和小伙伴们聊一聊这个话题。 1. 删除空洞 1.1 案例展示 首先我们先来看这样一个例子。 我现在有一个名为 sakila 的数据库,该库中有一个 film 表…

x宝评论抓取

#某宝评论接口sign参数逆向 1.接口速览 多次请求发现,t为时间戳,sign为加密参数,盲猜和data、t有关,sign为32位,盲猜是字符串的32位的MD5 2.搜索js代码 这里为搜索的是appKey,就找到了sign,然…

【CSS】常见的选择器

1.标签选择器 语法 标签 { }作用 标签选择器用于选择某种标签比如 选择p标签,并设置背景颜色 p { background-color:yellow; }例子 选择div标签,并将其字体大小设置为100px,字体设置为"微软雅黑",文字颜色设置为r…

UDP协议和TCP协议

目录 UDP TCP 通过序列号与确认应答提高可靠性 为什么TCP是三次握手 为什么是四次挥手 超时重传机制 流控制 利用窗口控制提高速度 窗口控制与重发控制 拥塞控制 延迟确认应答 捎带应答 UDP UDP是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。…

从零开始,5分钟轻松实现Spring Boot与RabbitMQ的无缝集成

🌏 环境 docker v4.16.2springboot 2.7.0RabbitMQ 3.9.1 rabbitmq_delayed_message_exchange 3.9.0 ps:代码地址 gitee 🪜 服务架构 使用maven多模块,将生产者、消费者分别以springboot项目启动,两者通过RabbitMQ…

面试总结个人版

一、面试题 java 集合 , spring springmvc springboot springcloud 数据库相关的, redis 相关 ,mq 相关 ,结合业务的场景题 1、part one 集合 HashMap底层原理 HashMap是基于哈希表的Map接口的非同步实现。元素以键值对的形式存…
最新文章