Javase学习文档------面象对象再探

news2024/11/16 20:31:02

再续前缘面向对象

书接上回构造器
在Java中,可以通过在空参构造方法中使用 this() 关键字来调用类中其它的构造方法。
使用 this() 关键字来调用其它构造方法时,需要注意以下几点:

1.this() 必须是构造方法的第一条语句;
2.一个构造方法内最多只能调用一次 this() 方法;
3.在调用 this() 方法时,参数列表必须满足所调用的构造方法的要求,即形参类型和数量要与被调用的构造方法一致;
4.如果没有手动定义任何构造方法,则系统会自动生成一个无参构造方法,即使不显式地书写,Java也会为我们提供一个默认的空参构造方法。

static关键字

在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.
	它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
	对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
	可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
	static变量置于方法区中!
用static声明的方法为静态方法
	不需要对象,就可以调用(类名.方法名)
	在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可直接访问非static的成员。
	但是可以通过对象使用。
	静态方法不能以任何方式引用this和super关键字

静态

block块

静态代码块
	声明位置    	类中,方法外 
	
	作用   	    整个类进行某些初始化操作(静态属性赋值...)
	
	执行时机    	类第一次加载时,只执行一次,如果多个静态块,从上倒下一次执行
	
构造代码块 
	声明位置     类中,方法外
		
	作用        构造代码块是为对象初始化操作(为静态或非静态成员属性赋值...)
		
	执行时机	    创建对象时,执行构造器代码之前执行,如有多个,从上倒下一次执
	行
普通语句块  	    
	声明位置     方法中 
	
	作用        声明一些临时变量等..
		
	执行时机    跟随方法执行
		
同步代码块(未完待续~)
	声明位置
	作用
	执行时机
注意
	类第一次被载入时先执行static代码块;
	类多次载入时,static代码块只执行一次;
	static块经常用来进行static变量的初始化。是在类初始化时执行,不是在创建对象时执行。
	静态初始化块中不能访问非static成员。
	构造块被被编译到将要执行的构造器代码之前执行
	区别
		静态块,仅在类的第一次使用时加载。
		构造块,先于构造器执行,每创建一个对象执行一次

private私有化

private是一种访问修饰符,用于限制类的成员变量和成员方法的访问范围。
private修饰的成员只能在定义它所属的类内部访问,其他类无法直接访问。

1  总之,属性私有化是Java面向对象编程中的重要概念,它可以有效的保护对象数据的安全性,同时也可以提高程序的可维护性和易用性。
2  但需要注意的是,过度的属性私有化会增加程序的复杂性,因此在进行设计时应该根据实际需求来灵活运用。
3  使用private修饰成员变量可以增加程序的安全性和稳定性,避免了其他类直接修改它,也可以实现对成员变量的封装。
封装是面向对象编程中的一个重要概念,它指的是隐藏类的内部细节,仅对外部提供有限的接口,从而使得程序更加安全和可靠。
	例如,我们定义一个Person类,其中包括一个private的age属性,以及公开的setAge和getAge方法:
public class Person {
    private int age;
    public void setAge(int age) {
        this.age = age;
    }
    public int getAge() {
        return age;
    }
}

上述代码中,age属性被设置为private,只有Person类内部才能直接访问,其他类无法直接访问。同时,Person类提供了公开的setAge和getAge方法,用于设置和获取age属性的值。这样设计的好处是,外界程序无法直接修改age属性的值,必须通过Person类提供的方法来进行操作。这不仅提高了程序的安全性,还使得程序更加易于维护和调试。

封装

封装是Java中的一个面向对象编程的原则,指将类的内部数据和方法保护起来,只对外界暴露一些必要的接口。
问控制
通过private、protected、public等访问控制符来限制属性和方法的访问权限,从而防止程序对类的内部实现细节进行修改,确保数据的安全性和可靠性。

	public class Person {
	    private String name;
	    protected int age;
	    public void setName(String name) {
	        this.name = name;
	    }
	    public String getName() {
	        return name;
	    }
	 }
  1. name属性使用了private访问控制符,只有Person类内部才能直接访问该属性,其他类无法访问。age属性使用了protected访问控制符,可以被该类的子类直接访问,但其他类无法直接访问。
  2. 隐藏实现细节
    封装还可以隐藏类的实现细节,使得类的内部实现细节对外部不可见,对外部提供的方法只需要传入必要的参数并返回相应的结果即可。通过这种方式,可以有效的防止外部程序对类的内部进行不必要的干涉和修改,提高了程序的可维护性。
public class Person {
    private String name;
    private int age;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        if (age >= 0) {
            this.age = age;
        } else {
            System.out.println("年龄不能为负数!");
        }
    }
    public int getAge() {
        return age;
    }
  }

通过private、protected、public等访问控制符来限制属性和方法的访问权限,从而防止程序对类的内部实现细节进行修改,确保数据的安全性和可靠性。 隐藏内部的实现细节,对外提供一对公共的访问方式

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

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

相关文章

经典文献阅读之--NORLAB-ICP(重力约束ICP)

0. 简介 最近几年IPC相关的文章也出了不少,最近作者有看到了一篇比较有意思的ICP论文—《Gravity-constrained point cloud registration》,这篇论文将传统的ICP考虑了重力因素,高频率的IMU数据弥补了低频的传感器数据。除此之外&#xff0c…

4K分辨率搭配光学变焦功能,极米H6成旗舰家用投影首选

近几年,我国投影机市场产品竞争日趋激烈,以极米为代表的国产品牌迅速崛起并逐步超越国际品牌成为中国投影机市场的领跑者。虽然目前国产投影仪品牌比较多,但其中极米科技旗下的产品最受消费者青睐。IDC数据显示,2022年上半年&…

easyexcel导出中自定义合并单元格,通过重写AbstractRowWriteHandler

针对 阿里的easyexcel 自定义处理 任意单元格合并 官方给出的合并单元格 只给出固定规律的单元格合并,当然官方也指出可以自定义合并单元格的策略,我们跟进LoopMergeStrategy 这个合并策略的实例类,发现里面继承了AbstractRowWriteHandler,官方示例代码如下 /*** 合并单元格…

揭秘!Chrome 调试的11+隐藏技巧,让你在开发中如虎添翼!

前言 chrome 浏览器作为前端童鞋的老婆,相信你一定不陌生。调页面、写BUG、画样式、看php片少了它整个世界都不香了。 不信?一起来看看我们的老婆有多厉害… 1、一键重新发起请求 在与后端接口联调或排查线上 BUG 时,你是不是也经常听到他…

Python中的主函数

在Python代码中,我们常常看到主函数是以if __name__ __main__开头的,比如 它的原理是什么呢? 首先要知道,__name__是内置变量,用于表示当前模块的名字。在一个模块中运行以下语句,你会发现输出的是__main…

CSS:横向导航栏

横向导航栏&#xff08;盗版导航栏&#xff0c;B站仿写。&#xff09; 原视频链接 <html><head><title>demo</title><style>*{margin: 0;padding: 0;list-style: none;text-decoration: none;}body{display: flex;justify-content: center;a…

模型蒸馏与压缩简单介绍

目录 一、概述 二、DistilBERT模型介绍 2.1 基本结构 2.2 知识蒸馏方法 一、概述 预训练语言模型虽然在众多自然语言任务中取得了很好的效果&#xff0c;但通常这类模型的参数量较大&#xff0c;很难满足实际应用中的时间和空间需求。 下图给出了常见预训练语言模型参数量的…

JDK11 下载与安装、环境配置(全网最详情,值得收藏)

目录 一、下载JDK11 二、安装JDK11 三、配置环境变量 四、验证环境配置是否成功 五、答疑&#xff0c;为什么不配置 CLASSPATH 什么是JDK JDK是 Java 语言的软件开发工具包&#xff0c;主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心&#xff0…

【算法训练(day3)】快速排序模版选择及不同版本快排对比

目录 一.划分区间的选取 二.代码实现lomuto版本快速排序 三.hoare版本快速排序 四.竞赛模板的选取 五.竞赛模板的代码实现 一.划分区间的选取 目前市面上常用的有两种划分区间&#xff0c;一种是hoare划分另一种是Lomuto划分。常见快速排序实现模版比如挖坑法和经典快速排…

第三章(2):深入理解NTLK库基本使用方法

第三章&#xff08;2&#xff09;&#xff1a;深入理解NTLK库基本使用方法 本节主要介绍了NLTK库的基本使用方法&#xff0c;其中对NLTK的安装与配置进行了介绍。随后&#xff0c;对文本处理中常用的分词、句子分割和词性标注这三个任务进行了详细讲解。 如果感觉有用&#xff…

《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议

密码协议是指两个或者两个以上参与者使用密码算法时&#xff0c;为了达到加密保护或安全认证目的而约定的交互规则。 密钥交换协议 公钥密码出现之前&#xff0c;密钥交换很不方便&#xff0c;公钥密码可以在不安全信道上进行交换&#xff0c;交换的密码协议是为了协商会话密钥…

实现开机动画和自定义Toolbar的高级写法

需求是自定义一个Toolbar和全屏展示一个第一次激活App的开机动画 1自定义Toolbar的使用 1仍然是先将工程的theme.xml中设置成NoActionBar <resources xmlns:tools"http://schemas.android.com/tools"><!-- Base application theme. --><style name&…

Oracle11g全新讲解之PLSQL编程

一、PLSQL编程 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言.通过增加变量、控制语句&#xff0c;使我们可以写一些逻辑更加复杂的数据库操作. 语法结构 declare--声明变量 变量名称 v_ 开头&#xff0c;规范 begin--执行具体的语句--异常处理 …

Spring原理学习(五):一篇讲清楚动态代理(jdk和cglib)的使用、原理和源码

目录 一、jdk动态代理的基本使用 二、cglib动态代理的基本使用 2.1 方法一&#xff1a;method.invoke() 方法反射调用 2.2 方法二&#xff08;spring使用的这个方法&#xff09;&#xff1a; methodProxy.invoke() 2.3 方法三&#xff1a;methodProxy.invokeSuper() 三、…

(Linux驱动入门)字符设备

一、设备相关概念 1.1 设备号 内核中通过类型dev_t来描述设备号&#xff0c;其实质是unsigned int 32位整数&#xff0c;其中高12位为主设备号&#xff0c;低20位为次设备号。设备号也是一种资源&#xff0c;当我们需要时可以调用函数去申请。 ​​​​​​​int register_c…

光伏发电数据监控的运维平台

摘要&#xff1a;全球化经济社会的快速发展,加快了传统能源的消耗,导致能源日益短缺,与此同时还带来了严重的环境污染。因此,利用没有环境污染的太阳能进行光伏发电获得了社会的普遍关注。本文根据传统式光伏电站行业的发展背景及其监控系统的技术设备,给出了现代化光伏电站数据…

Vue3通透教程【十二】TS类型声明优势

文章目录 &#x1f31f; 写在前面&#x1f31f; 上篇文章解惑&#x1f31f; JS函数中的隐患&#x1f31f; 函数中的类型&#x1f31f; 写在最后 &#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更新 V…

计算机视觉 | 八斗人工智能 (中)

目录 卷积&滤波1.一个没有任何效果的卷积核2.平均均值滤波3.图像锐化4.soble边缘检测 卷积的三种填充模式1.padding --> same模式 最常用的模式2.full和valid模式三通道卷积 canny边缘检测算法&#xff08;效果最好&#xff09;Sobel算子、Prewitt算子 相机模型畸变矫正…

新能源汽车和数字化转型

工业时代的代表产品是交通运输设备&#xff0c;核心桂冠是发动机。信息时代的代表产品是智能手机&#xff0c;核心桂冠是芯片。 汽车是个很有代表性产品&#xff0c;因为它既属于复杂高精密金属机械设备&#xff0c;又属于大规模使用的大件消费品。所以这100年来&#xff0c;汽…

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II 、55. 跳跃游戏 、45.跳跃游戏II

文章目录 122.买卖股票的最佳时机II55. 跳跃游戏45.跳跃游戏II:star: 122.买卖股票的最佳时机II 遇到每天正利润就收集&#xff0c;负利润就不收集 链接:代码随想录 解题思路&#xff1a; ①因为可以多次买卖&#xff0c;所以考虑到最终把最终利润进行分解 如假如第0天买入&am…