JAVA面向对象(三)

news2025/2/1 19:40:59

第三章  封装与继承


目录

第三章  封装与继承

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加载类时,加载静态代码块
    • ​​​​​​​如果有多个静态块,按顺序加载
    • 每个静态代码块只会被执行一次

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java并发编程:ArrayBlockingQueue详解

文章目录 一、简介二、数据结构三、源码分析3.1 属性3.2 构造方法3.3 方法3.3.1 入队3.3.2 出队3.3.3 获取元素3.3.4 删除元素 四、总结 一、简介 ArrayBlockingQueue 顾名思义:基于数组的阻塞队列。数组是要指定长度的,所以使用 ArrayBlockingQueue 时…

在知乎逮到一个腾讯10年老测试,聊过之后收益良多...

老话说的好,这人呐,一单在某个领域鲜有敌手了,就会闲得蛋疼。前几天我在上班摸鱼刷知乎的时候认识了一位腾讯测试大佬,在腾讯工作了10年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内有一…

Python基础知识讲解——main方法

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看。 但事实上python中是没有你理解中的“main()”方法的。 言归正传 if name "main":可以看成是python程序的入口&a…

数据结构与算法系列之习题练习

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 力扣习题 括号匹配问题。用队列实现栈。用栈实现队列。设计循环队列。 有效的括…

【数据分析案例】深度分析超市零售商店数据--Python数据分析实战

前言 咳咳,又是好久不见~这不高考已经结束了 对python感兴趣的准大学生们,是打算好好玩几个月还是,继续研究学习python呢~ 🤨 我呢 还是建议大家劳逸结合哈哈 先玩再学习~ 当然啦 最重要的还是看你们自己呀 不过我以上这些都不能…

[NOI2007] 调兵遣将

题目描述 我军截获的情报显示,敌军正在集结兵力试图向我军重要的军械研究所发起进攻。由于我军正处于多线作战的状态,无法抽调大批兵力前去支援,指挥部决定通过有效的战前部署来提高胜率,减少伤亡和损失。 该军械研究所的平面图…

网络安全自学笔记+学习路线+就业规划(超详细)

每天都有新闻报道描述着新技术对人们的生活和工作方式带来的巨大乃至压倒性影响。与此同时有关网络攻击和数据泄露的头条新闻也是日益频繁。 攻击者可谓无处不在:企业外部充斥着黑客、有组织的犯罪团体以及民族国家网络间谍,他们的能力和蛮横程度正日渐…

如何使虚拟机自动生成ip地址

一. 打开虚拟机并登录账号进入命令行界面输入指令: vi /etc/sysconfig/network-scripts/ifcfg-ens33 通过指令进入到下面的界面当中 点击键盘输入 "i" 进入编辑模式将文件修改为 文件当中的 BOOTPROTO可以将ip地址定义为自动生成类型或者静态指定类型其中…

力扣 213. 打家劫舍 II

一、题目描述 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻…

高考后计算机人工智能大类专业的选择建议

随着GPT的出现,很多人开始质疑是否还需要学计算机专业,计算机专业是否会消失。 先给结论,不会! 只是会产生分层,大体上是这样的: 核心代码部分还是需要人来写的,只要是代码方式出现的结果&#…

了解ASEMI代理英飞凌TLE6208-6G其功能和应用的综合指南

编辑-Z TLE6208-6G是一款高度集成、通用且高效的汽车半桥驱动器,由英飞凌设计。这种功能强大的设备专门设计用于满足汽车应用的苛刻要求,如控制直流电机、螺线管和电阻负载。在本文中,我们将深入研究TLE6208-6G的功能、优点和应用&#xff0…

【Spring MVC】这几种传参方式这么强大,让我爱不释手,赶快与我一起去领略吧 ! ! !

前言: 大家好,我是良辰丫,在上2一篇文章中我们已经初步认识了Spring MVC,并且学习了热部署的配置,今天我们将继续开始我们的Spring MVC的学习! ! !💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:jav…

JDK9~17+Springboot3 @Resource常见问题和解决方案

一、常见问题描述 因为JDK版本升级的改动,在Jdk9~17环境下,搭建Springboot项目,会出现原有Resource(javax.annotation.Resource)不存在的问题,导致项目从Jdk8迁移到高版本时遇到的问题 原因 你可能会问&…

TiDB亿级数据亚秒响应查询将MySql数据全量迁移到TiDB

目录 1 下载安装TiDB工具包1.1 检查最新版本1.2 下载tidb-toolkit 2 Dumpling导出数据2.1 Dumpling工具简介2.2 导出需要的权限2.3 创建用户并授权2.4 验证数据库2.5 导出sql文件2.6 查看导出文件 3 TiDB Lightning导入数据3.1 TiDB Lightning简介3.2 TiDB Lightning 整体架构3…

蓝桥杯【第14届国赛】Python B组

本题解仅代表个人观点,仅供参考,欢迎各位指正 A:弹珠堆放 【问题描述】 小蓝有 20230610 颗磁力弹珠,他对金字塔形状尤其感兴趣,如下图所示: 高度为 1 的金字塔需要 1 颗弹珠; 高度为 2 的金字…

【Jetpack】使用 Room 中的 Migration 升级数据库异常处理 ( 多个数据库版本的迁移 | fallbackToDestructiveMigration() 函数处理升级异常 )

文章目录 一、Room#Migration 迁移工具升级数据库二、多个数据库版本的迁移三、数据库异常处理 - RoomDatabase.Builder#fallbackToDestructiveMigration() 函数四、完整代码示例 一、Room#Migration 迁移工具升级数据库 Room Migration 数据库迁移工具 是 Android Jetpack Arc…

【AI实战营第二期】第三次作业——基于 RTMDet 的气球检测(包含数据集)

作业:基于 RTMDet 的气球检测 背景:熟悉目标检测和 MMDetection 常用自定义流程。 任务: 基于提供的 notebook,将 cat 数据集换成气球数据集; 按照视频中 notebook 步骤,可视化数据集和标签; 使用MMDetection算法库…

01_Linux字符设备驱动开发

目录 字符设备驱动简介 驱动模块的加载和卸载 字符设备注册与注销 实现设备的具体操作函数 添加LICENSE和作者信息 Linux设备号的组成 设备号的分配 chrdevbase字符设备驱动开发实验 创建VSCode工程 添加头文件路径 编写实验程序 C库文件操作基本函数 编写测试APP…

苹果Vision Pro正式发布,下一个iPhone诞生了?

在库克即将退休之际,苹果开启了下一个十年。 2023年6月6日,在苹果WWDC开发者大会上,苹果发布了15寸的MacBook Air,以及一众iOS 17、iPad OS 17、Mac OS等系统的更新。当我们觉得这些常规更新有点不痛不痒,甚至想大呼“…

​selenium中元素定位正确但是操作失败,6种解决办法全稿定

selenium中元素定位正确但是操作失败的原因无外乎以下4种: 一、页面没加载好 解决方法:添加等待方法,如: time.sleep() 二、页面提交需要等待给数据后台 解决方法:添加等待方法,如: time.sl…