类与对象、构造器、封装、内存划分详解
2021/5/31 7:21:10
本文主要是介绍类与对象、构造器、封装、内存划分详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 一.面向对象
- 1.1概述
- 1.2面向过程和面向对象
- 1.3类和对象的区别
- 1.4实例化过程/创建对象的过程
- 1.5 对象的使用和特征
- 1.6常见异常
- 1.7 javaBean
- 二.构造方法
- 2.1概述
- 2.2构造方法和普通方法
- 三.this关键字
一.面向对象
1.1概述
面向对象(Object Oriented)是一种思想,将数据和方法作为整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
1.2面向过程和面向对象
面向过程
侧重步骤
面向对象
侧重模块(炒饭和盖饭)
优点:维护简单,可拓展性,可重用性,降低耦合
1.3类和对象的区别
类是某一类对象的抽象,对象才是一个具体的实体.比如人就是一个类,那张三这个人就是对象,是一个具体的实体
类就是一种数据结构,而对象是某种类型的数据结构在内存中的具体表示
类定义标准和模板,而对象就是符合这个标准的个体
什么时候使用静态变量,什么时候使用成员变量
静态变量是类级别的,对象无关,是所有对象都一致的
成员变量是对象级别的
1.4实例化过程/创建对象的过程
1 对应类加载入静态区
2 new 堆内存创建内存空间,把类中的成员属性放到内存空间中
3 执行构造方法,对堆内存空间中的属性初始化,执行完弹栈
4 把堆内存地址返回调用处
每个对象空间分为3块
1 数据区域 成员变量
2 头部 hash值
3 类型: 静态区类文件的空间引用
1.5 对象的使用和特征
JVM特性
跨平台,多线程,自动垃圾回收,面向对象
垃圾:没有更多的引用指向
面向对象特性
继承性,封装性,多态性,抽象
对象的使用方法
1 创建对象
语法: 类名 对象名 = new 类名();
2 调用对象的属性和方法
语法: 对象名.属性名 对象名.方法名
1.6常见异常
空指针异常
空指针是运行时异常,编译是不报错,一般因为程序员粗心导致
System.out.println();中谁可能报空指针异常
分析:
System是类,不会报空指针异常,println()是方法不会报,所有只有可能是out是空
1.7 javaBean
javaBean就是实体类
一个标准的javaBean包含
一个无参的构造方法,私有的成员变量,set和get方法,且必须是一个公共类
二.构造方法
2.1概述
编译器的功能:
把java文件编译成.class文件
简称语法结构是否合法
帮我们把不规范的代码补全
构造方法:
语法: [权限修饰符] 类名(参数列表){方法体}
作用:创建当前类的实例化对象,并初始化成员属性
注意:如果我们没有定义构造方法则默认有一个公共的无参构造(public 类名(){})一旦我们指定了构造方法,则默认的无参构造就没有了,所以一般我们需要指定构造方法的时候,要需要写一个无参构造
构造方法重载
可以根据需求,编写多个构造方法,方法名相同,参数列表不同(类型,数量)
2.2构造方法和普通方法
构造和成员方法同名,因为构造方法没有返回值类型
三.this关键字
this是每个对象中保存自身内存地址的一个引用类型的成员变量
this就表示这个对象
只能出现在成员方法和构造方法中,不能出现在静态方法中
作用:
1.用在成员方法/构造方法中,用来区分同名的成员变量和局部变量, this.xxx
区分静态变量和局部变量:类名
区分成员变量和局部变量:this
2.用在构造方法中,重载调用当前类的其他构造方法
this(参数); 必须写在构造方法的第一行
例子:
class MyDate{ int year; int month; int day; public Mydate(){ this.(year,month,day) } public MydateI(int year,int month,int day){ this.year = year; this.month = month; this.day = day; } }
注意:谁调用的这个方法.这个this就是谁,this是个成员变量
这篇关于类与对象、构造器、封装、内存划分详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南