重学java 25.面向对象 权限修饰符、final关键字、代码块

   别让平淡生活,耗尽你所有的向往

                                     —— 24.4.27

重点概述

01.知道final修饰成员之后特点

02.会使用静态代码块以及知道静态代码块的使用场景

03.会使用匿名内部类

一、权限修饰符

1.概述

        在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限
public:公共的,最高权限,被public修饰的成员,在哪里都能访问
protected:受保护的
defaut:默认的 注意 不写权限修饰符就是默认权限,不能直接把default写出来

        只有接口中的方法可以带default 不写权限修饰符就是默认的default权限修饰符

private:私有的,只能在自己的类中直接访问

2.不同权限的访问能力

同类

        public:                        yes

        protected:                  yes

        default:                       yes

        private:                       yes

同包不同类

        public:                        yes

        protected:                  yes

        default:                       yes

        private:                       no

不同包子父类

        public:                        yes

        protected:                  yes

        default:                       no

        private:                       no

不同包非子父类

        public:                        yes

        protected:                  no

        default:                       no

        private:                       no

public具有最大权限,private具有最小权限

编写代码时,如果没有特殊的考虑,建议这样使用权限:

1.属性用 private ——> 封装思想

2.成员方法 public ——> 便于调用

3.构造方法 public ——> 便于new对象

二、final关键字

1.概述:最终的

2.使用:

        a、修饰一个类

        b、修饰一个方法

        c、修饰一个局部变量

        d、修饰一个成员变量

        e、修饰一个对象

3.怎么学final:只需要知道被final修饰后特点是什么

1.final修饰类

1.格式:

        public final class 类名{}

2.特点:

        被final修饰的类不能被继承

public final class Animal {
}
public class Dog extends Animal{
}

 

2.final修饰方法

1.格式:

        修饰符 final 返回值类型 方法名(形参){

                方法体

                return 结果

        }

2.特点:

        被final修饰的方法,不能被重写(final 最终的方法)

3.注意:

        final和abstract不能同时使用

3.final修饰局部变量

1.格式:

        final 数据类型 变量名 = 值

2.特点:

        被final修饰的变量不能二次赋值(变量在定义时没有赋初值可以第一次定义)

public class Demo131Test {
    public static void main(String[] args) {
        final int i = 10;
//        i=114; 被final修饰的变量不能二次赋值

        final int j;
        j = 100;    // 属于第一次赋值
//        j = 1000; // 属于第二次赋值
    }
}

4.final修饰对象

1.格式:

        final 数据类型 对象名 = new 对象();

2.特点:

        被final修饰的对象,地址值不会改变,但是对象中的属性值可以改变

3.示例:

public class Demo132Test02 {
    public static void main(String[] args) {
        Person p1 = new Person("小明",25);
        System.out.println(p1);

        final Person p2 = new Person("小红",19);
        p2.setName("小刚");
        p2.setAge(19);
        System.out.println(p1.getName()+":"+p1.getAge()+" "+p1);
        System.out.println(p2.getName()+":"+p2.getAge()+" "+p2);
    }
}

5.final修饰成员变量

1.格式:

        final 数据类型 变量名 = 值;

2.特点:

        a、需要手动赋值

        b、不能二次赋值

3.示例:

如果没有初值则无法有get方法

如果有初值则无法使用set方法

public class Student {
    final String name = "小明";

    public Student() {
    }

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

三、代码块

1.构造代码块

1.格式:

        {

                代码

        }

2.执行特点:

        优先于构造方法执行,每new一次,就会执行一次

2.静态代码块

1.格式:

        static{

                代码

        }

2.执行特点:

        静态代码块优先于构造方法和构造代码块执行的,而且只执行一次

3.静态代码块使用场景:

        如果想让一些数据最先初始化,而且只需要初始化一次,就可以将这些数据都放到静态代码块中

        示例:

public class Person {
    public Person(){
        System.out.println("我是无参构造方法");
    }

    // 构造代码块
    {
        System.out.println("我是构造代码块");
    }

    // 静态代码块
    static {
        System.out.println("我是静态代码块");
    }
}
public class Demo133Test {
    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
    }
}

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

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

相关文章

为什么 Facebook 不使用 Git?

在编程的世界里,Git 就像水一样常见,以至于我们认为它是创建和管理代码更改的唯一可行的工具。 前 Facebook 员工,2024 年 首先,我为什么关心? 我致力于构建 Graphite,它从根本上受到 Facebook 内部工具的…

第十五届蓝桥杯省赛第二场C/C++B组E题【遗迹】题解

解题思路 错解 贪心:每次都移动至当前最近的对应方块上。 反例: s s s abxac t t t abac 贪心结果(下标) 0 → 1 → 0 → 4 0 \rightarrow 1 \rightarrow 0 \rightarrow 4 0→1→0→4,答案为 5 5 5。 正确结…

【MRI重建】基于径向采样的GRASP重建实现(matlab)

关于 对比增强MRI和弥散MRI成像,对于时间分辨率要求都比较高,为了捕获高时间空间分辨率,这里使用GRASP方法,重建radial径向采样的MR数据。使用的稀疏正则项为 temporal total variation。 相关文章 https://onlinelibrary.wiley.com/doi/10.1002/mrm.24980 https://onl…

前端学习笔记3

列表、表格与表单​ 列表就是信息资源的一种展示形式。它可以使信息结构化和条理化,并以列表的样式显示出来,以便浏览者能更快捷地获得相应的信息。 3.0 代码访问地址 https://gitee.com/qiangge95243611/java118/tree/master/web/day03 3.1 列表 ​ 列表大致可以分为3类…

mac资源库的东西可以删除吗?提升Mac运行速度秘籍 Mac实用软件

很多小伙伴在使用mac电脑处理工作的时候,就会很疑惑,电脑的运行速度怎么越来越慢,就想着通过删除mac资源库的东西,那么mac资源库的东西可以删除吗?删除了会不会造成电脑故障呢? 首先,mac资源库…

沉浸式推理乐趣:体验线上剧本杀小程序的魅力

在这个信息爆炸的时代,人们的娱乐方式也在不断地推陈出新。其中,线上剧本杀小程序以其独特的沉浸式推理乐趣,成为了许多人的新宠。它不仅让我们在闲暇之余享受到了推理的快乐,更让我们在虚拟的世界里感受到了人性的复杂与多彩。 线…

【hackmyvm】 Quick2靶机

渗透流程 渗透开始1.IP地址 获取2.端口扫描3.任意文件读取4.扫描目录5.总结信息6.漏洞扫描7.php_filter_chain_generator.py使用8.提权 渗透开始 1.IP地址 获取 ┌─[✗]─[userparrot]─[~] └──╼ $fping -ag 192.168.9.0/24 2>/dev/null 192.168.9.124 本机 192.1…

base64格式图片直接显示

<img :src"data:image/png;base64,url"/>

阿斯达年代记游戏下载教程 阿斯达年代记下载教程

《阿斯达年代记&#xff1a;三强争霸》作为一款气势恢宏的MMORPG大作&#xff0c;是Netmarble与STUDIO DRAGON强强联合的巅峰创作&#xff0c;定于4月24日迎来全球玩家热切期待的公测。游戏剧情围绕阿斯达大陆的王权争夺战展开&#xff0c;三大派系——阿斯达联邦、亚高联盟及边…

“PowerInfer:消费级GPU上的高效大语言模型推理引擎“

PowerInfer是由上海交通大学IPADS实验室开发的一个高效大语言模型&#xff08;LLM&#xff09;推理引擎&#xff0c;专为个人电脑&#xff08;PC&#xff09;上的消费者级GPU设计。它通过利用LLM推理中的高局部性&#xff0c;实现了快速且资源消耗低的模型推理&#xff0c;这一…

windows如何安装MySQL(详)

MySQL在Windows上的安装和配置 官网&#xff1a;www.mysql.com 下载地址&#xff1a;MySQL :: Download MySQL Community Server (Archived Versions) window系统 安装包&#xff08;Windows (x86, 64-bit), MSI Installer&#xff09; 压缩包&#xff08;Windows (x86, 64…

Java后端利用百度地图全球逆地理编码,获取地址

声明&#xff1a;本人是在实习项目的时候遇到的问题 一.使用Api分为四步骤全球逆地理编码 rgc 反geo检索 | 百度地图API SDK 步骤1,2自行完成 接下来去获取AK 二.申请AK 登录百度账号 点击创建应用&#xff0c;选择自己想用的服务&#xff0c;我只单选了逆地理编码&#xff…

目标检测的mAP、PR指标含义

基本概念 什么是一个任务的度量标准。对于目标检测任务来说&#xff0c;它的首要目标是确定目标的位置并判别出目标类别。这里已医学图像为例&#xff0c;我们需要计算出血液红细胞&#xff08;RBC&#xff09;、白细胞&#xff08;WBC&#xff09;和血小板的数量。为了实现这一…

表格的单元格合并和表头的合并——vxe-table

vxe-table的官网&#xff1a;https://vxetable.cn/#/table/advanced/mergeCell在你的项目中下载安装完成后&#xff0c;先在main.js文件中引入&#xff1a; import VXETable from vxe-table import vxe-table/lib/style.css Vue.use(VXETable)一、单元格合并 效果图&#xff…

时间序列预测:基于PyTorch框架的循环神经网络(RNN)实现销量预测

之前随手一写&#xff0c;没想到做预测的同学还挺多&#xff0c;但是之前那个效果并不好&#xff0c;于是在之前的基础上重新修改完善&#xff0c;到了现在这一步才感觉预测算是初步能应用。 上文地址&#xff1a;LSTM模型预测时间序列&#xff1a;根据历史销量数据预测商品未…

开源代码分享(24)-考虑柔性负荷的综合能源系统低碳经济优化调度

参考文献&#xff1a; [1]薛开阳,楚瀛,凌梓,等.考虑柔性负荷的综合能源系统低碳经济优化调度[J].可再生能源, 2019, 37(08): 1206-1213. [2]刘蓉晖,李子林,杨秀,等.考虑用户侧柔性负荷的社区综合能源系统日前优化调度[J].太阳能学报, 2019, 40(10):2842-2850. 1.基本原理 基…

智慧药房系统源码解析:开发高效医保购药小程序教学

今天&#xff0c;小编将为大家讲解智慧药房系统的源码结构及其开发过程&#xff0c;旨在为开发者提供一份高效、可靠的指南。 一、系统架构概述 智慧药房系统由前端和后端两部分组成。医保购药小程序则是智慧药房系统的一个重要应用场景&#xff0c;其功能主要包括药品浏览、医…

学浪app视频下载方法,让你随时随地观看

学浪app客户端现在越来越难&#xff0c;不但禁止了录屏软件&#xff0c;而且连抓包都禁止了&#xff0c;其实学浪的难度很高&#xff0c;我只是很幸运&#xff0c;找到了网页进入学浪的方法&#xff0c;但是我知道这个方法不稳定&#xff0c;所以就做成了软件&#xff0c;大家直…

Vscode上使用Clang,MSVC, MinGW, (Release, Debug)开发c++完全配置教程(包含常见错误),不断更新中.....

1.VSCode报错头文件找不到 clang(pp_file_not_found) 在Fallback Flags中添加 -I&#xff08;是-include的意思&#xff0c;链接你的编译器对应头文件地址&#xff0c;比如我下面的是MSVC的地址&#xff09; 问题得到解决~

成为程序员后,我才真正明白的那些事儿

嗨&#xff0c;我是小路。一名努力向上生长&#xff0c;提高职业能力的90后程序员。今天想和大家分享一下踏入编程世界&#xff0c;成为一名程序员以来&#xff0c;那些让我恍然大悟、受益匪浅的道理。无论你是正在考虑转行编程&#xff0c;还是已经在路上持续精进程序猿们&…