【JavaSE】类和对象重点知识荟萃

简介: 【JavaSE】类和对象重点知识荟萃

思维导图:

 

1.类和类的实例化:

  1. 面向对象的思想,Java是一门面向对象的语言,面向对象是解决问题的一种思想,面向对象不关注过程
  2. 类的定义需要用到关键字class,类名采用大驼峰的形式,类有成员变量(字段、属性)和成员方法(行为)组成,建议1个Java文件写1个类public修饰的类必须要和文件名相同。
  3. 对成员变量赋值的5种方法:在定义成员变量的同时进行初始化叫做就地初始化成员变量也可以不初始化,那就默认为0;在类外通过对象的引用直接赋值也可以;可以使用构造方法进行初始化;在类外也可以提供get和set方法来完成初始化。
  4. 成员变量不赋值可以使用,系统默认基本数据类型为0;引用类型为null(boolean类型默认为false,char类型默认为空)。局部变量不赋值的话使用会报错!
  5. 类的实例化有俩步非常重要的操作。第1步是new一个类的对象出来,为这个对象分配内存;第2步是调用合适的构造方法,构造方法有很多种(无参、多个参数)。
  6. 类的实例化需要用到关键字new,是在堆上创建的。堆上会存储成员变量的有关信息,不会存成员方法;只有当对象引用了方法,才会在栈帧上开辟空间存放你所调用的方法。实例化多个对象,这些对象之间相互独立,谁都不会影响其他对象,每个对象之间不会冲突,且在堆上开辟的内存地址也不可能一样!
  7. this引用的是调用成员方法的对象,哪个对象调用了这个成员方法哪个对象就是这个this引用。this引用只能在成员方法中使用,成员变量不能使用
  8. this的功能:如果this.属性,代表着访问当前对象的属性。如果this ( );调用当前对象的构造方法,必须注意:this ();的使用必须放到构造方法中并且在构造方法的第一行,不能形成环!如果this.方法名,表示调用当前对象中的成员方法。

2.构造方法:

  1. public + 类名(),构造方法的名字和类名相同,没有返回值类型,置为void也不行。
  2. 构造方法的作用是为对象的属性赋值或对对象中的成员初始化,不负责给对象开辟空间
  3. 实例化对象调用的其实就是构造方法。如果没有显式定义,编译器会默认生成一个不带参数的构造方法。一旦用户定义了构造方法,编译器便不会再生成。构造方法是可以重载的,根据自己的需求可以构造合适的构造方法。
  4. 构造方法中,可以使用this来调用其他构造方法,但是this ();必须是第一条语句,且不能形成环,绕来绕去编译器也懵住了!
  5. 在对象的生命周期内只调用一次,这只是对于单个独立的对象而言。如果有其他的对象也可以正常调用各自的构造方法,只不过也只能调用一次。

3.封装:

  1. 面向对象程序有三大特性,封装、继承和多态
  2. 封装就是对类的实现细节进行了隐藏,同时提供了公开的方法对封装的属性或方法进行交互,提高了安全性,用private来实现,被修饰后只能在当前的类中进行访问,类外是不可以的!简单来说就是“套壳屏蔽细节”
  3. 访问修饰限定符:private、default、protected、public。public是谁都可以访问;private是只有在同一个类中才能访问到;default是在同一个包中才可以访问到;
  4. 包是由不同的类组合成的,类似于文件夹,包名需要小写

4.static关键字

  1. 被static修饰的成员变量称为静态成员变量,其不属于某个具体的对象,是所有对象共享的,不存储在某个对象的空间中。所以访问的时候最好的方法是用类名来访问静态成员变量
  2. 静态成员变量存储在方法区中,普通成员变量存储在堆上。静态成员变量随着类的创建而创建,类的销毁而销毁。类变量不能定义在普通方法中。
  3. 在静态方法里面不可以直接访问非静态的成员变量和成员方法,但是可以传参提供对象的引用来访问非静态成员,或是在静态方法内部实例化一个对象。非静态的可以访问静态的。
  4. 普通成员方法的()中默认有this,而静态成员方法和构造方法没有。
  5. 静态成员变量初始化有俩种:就地初始化和静态代码块初始化。就地初始化就是在创建的同时赋值。

5.代码块:

  1. 使用{ }定义的一段代码就称为代码块。代码块分为普通代码块(本地代码块)、构造代码块(实例代码块)、静态代码块和同步代码块。
  2. 实例代码块用于初始化实例成员变量,不加修饰符,定义在类的内部方法的外部
  3. 静态代码块用于初始化静态成员变量,static定义的代码块。当程序加载到类就会接着加载静态代码块,静态代码块最先被加载进行初始化同时开辟内存空间并且不管new多少个对象出来静态代码块只会执行1次
  4. 加载顺序:静态代码块>实例代码块>构造方法。如果有多个静态代码块或实例代码块,需要看定义的顺序,最后被定义的就是结果。
  5. 实例代码块只有在创建对象时才会执行,而静态代码块在类被创建时就执行。

6.内部类:

  1. 把一个类定义在某个类的内部,则称这个类是内部类,某个类就是外部类。内部类和外部类公用一个java源文件,编译后内部类会有自己的字节码文件
  2. 内部类分为:实例内部类、静态内部类、本地内部类、匿名内部类。
  3. 实例内部类:未被static修饰的成员内部类。实例内部类中如果定义静态成员变量必须加final否则会报错;实例内部类中不能定义一个静态的方法;实例内部类中可以任意访问外部类中的成员和方法;实例内部类当中访问和外部类同名变量的时候优先访问自己的;实例内部类的创建必须依赖于外部类;外部类不能直接访问实例内部类中的成员,必须先创建内部类的对象才可以做到。实例内部类中包含外部类的this引用
  4. 静态内部类:被static修饰的成员内部类。不能在静态内部类中直接访问外部类的非静态成员创建静态内部类时不需要先创建外部类对象,创建实例内部类则不然!

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

相关文章
|
人工智能
【笔试训练】day20
【笔试训练】day20
|
程序员
【汇编】Debug的使用
【汇编】Debug的使用
357 1
【汇编】Debug的使用
|
JavaScript 安全 虚拟化
vue element plus Virtualized Select 虚拟化选择器
vue element plus Virtualized Select 虚拟化选择器
674 0
|
监控 JavaScript 前端开发
俩万搭建安装SpringBoot+VUE【视频+文档+源码】
俩万搭建安装SpringBoot+VUE【视频+文档+源码】
131 1
|
算法
算法编程(十七):移除链表元素
算法编程(十七):移除链表元素
91 0
|
Rust 自然语言处理 Dubbo
Apache Dubbo 多语言体系再添新员:首个 Rust 语言版本正式发布
> 欢迎通过以下方式参与 Dubbo Rust 社区: > - 搜索并关注 Apache Dubbo 微信公众号了解社区最新动态 > - 直接到 GitHub 提交 Issue 或贡献代码 https://github.com/apache/dubbo-rust 近日,Apache Dubbo 发布了其 Rust 语言实现的首个版本,进一步丰富其多语言体系,这是社区全面对齐 Dubbo3
453 1
|
小程序 Android开发 开发者
Android 端03:小程序自定义启动加载页| 学习笔记
快速学习 Android 端03:小程序自定义启动加载页。
Android 端03:小程序自定义启动加载页| 学习笔记
|
测试技术 API Python
热饭的测开成果盘点第六期:在线编辑脚本平台
本期介绍的是一个django平台,它是我在18年的第一次大胆尝试在线维护脚本组装脚本。
热饭的测开成果盘点第六期:在线编辑脚本平台
|
Windows
在 Windows 安装期间将 MBR 磁盘转换为 GPT 磁盘
在 Windows 安装期间将 MBR 磁盘转换为 GPT 磁盘 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:http://blog.csdn.net/wpwalter/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
1696 0
|
Shell Windows
Notepad2、Sublime_text带图标的右键快捷打开方式
实现的效果:选中文本文件右键鼠标之后,按x键即可用notepad2快速打开文件,按3则可以用Sublime_text打开文件。 具体过程:根据各自需求,将下面的注册表信息,保存到本地新建的文本文件中,并改后缀为.reg,点击运行即可。
1364 0