java 类和对象

server/2024/10/25 10:25:30/

一.封装

1.封装的实现是用private修饰类中的成员变量,比如说private String name; 就对类中的成员对象进行了封装。并且此时的name也只能在当前类中使用,不能在其他的类中使用也不无法通过初始化一个对象后通过对象.name使用了。

2.非要使用private修饰的成员变量,需要通过setName和getName使用。

这里的getName和setName是可以通过快捷键设置的:

如果有多个成员变量可以按住Ctrl或者Shift就可以多选择了,这就是封装的使用。

二.访问修饰限定符

其中的default就是默认

这个就是default的类型的,不用加上default,加上default就过不了idea的编译器。

三.包

1.包简单的来说可以理解为一个文件夹,这是一个导包,所以我们很早之前就已经接触包了。

2.我们自己也可以创建一个包,在src中创建。

3.包的名称:首先要全部都是小写,其次就是域名逆置的写法,比如说:com.baidu.www,这就是创建了包之后的样子

4.在src中的test和在www中的test类是不会冲突的,因为他们在两个不同的包内,这里还可以在baidu中创建一个包。

5.这里不是import就不是导包,这里的package指的是声明包的路径。代表着Test的这个类在这个包下面。

6.如果没有package的包,都是在src这个默认的包下面,自定义包都会有package。

7.可以通过import导入我们自己的自定义包来使用。

8.不导入包的时候的写法就是把原来导入的包写在创建的对象中。

9.这里还可以通过*来导入java.util包中的所有类。

这里不要误会,java会在用到谁的时候调用谁不会全部调用。但是不代表*就没有缺点。在java.util和Java.sql中都Date的类那么如果这个时候都写Date类的话编译器就没办法知到Date是那个包中的Date了。这个时候只有一个解决办法。就是把包都补齐就可以使用了,所以一般来说还是用什么类就调用什么包。

10.这就是包访问权限也就是默认的访问修饰限定符default。

四.static成员

1.当一个类中的成员变量被static修饰的时候这个成员变量就不会再属于对象,变成了类变量。

2.这个类成员直接通过类名. 来直接访问。也可以通过对象. 来调用,但是我们建议用类名. 调用

3.类变量存储在方法区

4.静态成员变量不依赖于对象。

5.在静态方法中不能直接调用依赖对象的方法,因为静态方法不需要依赖对象。 但是可以在静态方法中通过初始化一个实例化对象之后再使用依赖对象的方法。

五.代码块

1.普通代码块:指的就是方法里面的代码块,可以理解为满足条件的时候执行括号里面的内容。也可以代表一个作用域。

2.构造代码块(实例代码块):方法外面的代码块,一般用来初始化非静态成员变量。

3.静态代码块最先执行,之后是实例代码块,然后才是构造方法。(实例化多个对象的时候,静态代码块只执行一次)

4.静态代码块:可以初始化静态变量。

5.实例成员变量和构造方法是有先后顺序的。(一般的类中都是先写出成员变量)因为二者都是初始化非静态成员变量,只有最后一次赋值才是真正的值,所以二者有先后顺序。

六.内部类

1.实例内部类

定义在类的内部,方法的外部:

实例内部类不能直接实例化:

实例内部类只能这样实例化:

实例内部类中的方法调用也是和普通类一样。

在实例内部类中也可以使用外部类的属性和方法:

在实例内部类中有和外部类同名的属性的时候,在new了一个内部类的对象之后,调用内部类的方法。打印出来的属性是属于内部类的:

在实例内部类中一定要访问和外部内同名的属性需要加上外部类 类名 + this + .

实例内部类也会产生字节码文件:

外部类不能直接访问实例内部类中的成员,只能通过实例化内部类对象来调用内部类的成员。

2.静态内部类

静态内部类:

静态内部类创建对象:

生成静态内部类对象的时候,不需要外部类对象的引用。所以外部内就没有生成对象,就没办法在静态内部类中直接调用外部类中非静态的属性和方法:

需要访问外部内对象的属性和方法,只能实例化一个外部类对象,通过外部类对象类引用他自己的属性和方法。

3.匿名内部类

这就是匿名内部类的创建:(理解为相当于一个类实现了这个接口,同时重写了test的方法)

方法的调用:(注意最后的分号)

发生了动态绑定:(相当于创建了一个类,然后这个类实现接口并且重写接口中的方法,在通过实例化一个类的对象)

4.局部内部类

局部内部类就是在外部类的方法内中创建:

局部内部类只能在该方法中使用,不能在其他地方使用。

并且局部内部类不能被public static等修饰符修饰

局部内部类也有自己独立的字节码文件:

局部内部类几乎不会使用。

七.匿名对象

第二个是匿名对象,只能使用一次。


http://www.ppmy.cn/server/122330.html

相关文章

Python 学习之生成图形验证码

一、 如何生成图形验证码? 新建一个captcha 的python 文件包,在__init__.py 文件中写入生成图形验证码的代码,将字体文件也放入这个文件包中 。 import random from PIL import Image, ImageDraw, ImageFont, ImageFilter import stringcla…

Spring Boot房屋租赁系统:技术架构解析

2 关键技术简介 2.1 JAVA技术 Java是一种多用途并且强大的编程语言,可用于开发运行在移动设备、台式计算机以及服务器端的软件。Java已及其流行。Java只要编写一次,无论什么地方都可以运行启动[1]。 Java语言是应用很广泛的语言,用它编写出的…

第一章 初识SpringBoot

目录 一、概述 二、原理初探 2.1. 原理图解 2.2. SpringBoot自动配置核心要点 2.3. 部分底层源码展现 2.4. 查看自动类配置情况 三、构建一个简单的SpringBoot应用 四、附带知识(yaml几种语法) 一、概述 Spring Boot是由Pivotal团队提供的全新框…

招银面试官:说说 Java transient 关键字吧

害,子谦最熟的是 Java,但很多 Java 基础知识都不知道,比如 transient 关键字以前就没用到过,所以不知道它的作用是什么,今天去招银面试的时候,面试官问到了这个:说说 Java 的 transient 关键字吧…

WGS1984快速度确定平面坐标系UTM分带(快速套表、公式计算、软件范围判定)

之前我们介绍了坐标系3带6带快速确定带号及中央经线(快速套表、公式计算、软件范围判定)就,讲的是CGCS2000 高斯克吕格的投影坐标系。 那还有我们经常用的WGS1984的平面坐标系一般用什么投影呢? 对于全球全国的比如在线地图使用&#xff1a…

记录一下oceanbase数据库导出数据到mysql

导出 SQL 文件 使用 mysqldump 工具从 OceanBase 导出 SQL 文件到 output2222.sql。在这一步中,你需要确保你有正确的权限和数据库访问配置。 mysqldump -h 192.168.191.72 -P 2881 -u rootA_a -p密码 rhzfdb > output2222.sql清理 SQL 文件 使用 sed 命令批量…

在Spring Boot中使用Logback进行日志管理

在Spring Boot中使用Logback进行日志管理 以项目www.studytool.site为例 Logback 是一个高效、灵活且支持多种输出方式的日志框架,广泛应用于Java项目中,特别是Spring Boot项目。本文将介绍如何在Spring Boot项目中配置和使用Logback,重点介绍…

公有IP与私有IP之间的区别

今天我们来分享私有IP地址和公有IP地址的有什么区别?主要从接入方式、特点以及各自的优势来说明。 一、接入方式不同 公有IP:是由互联网服务提供商分配的IP地址,可直接在互联网上通信,当设备接入公有IP就能够被全球其他设备直接…