Java 属性 方法 构造器 代码块

一.面向对象的三条主线
1.Java类及类的成员:属性,方法,构造器;代码块,内部类
2.面向对象的三大特征:封装性,继承性,多态性,(抽象性)
3.其他关键字:this, super, static, final, abstract, interface, import
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二.面向对象的两个要素
类:对一类事物的描述,是抽象的,概念上的定义
对象:是实际存在的 该类事物的每一个个体,因而也称为实例
在这里插入图片描述
三.类的成员
属性 = 成员变量 = field = 域,字段
方法 = 成员方法 = 函数 = method
创建类的对象 = 类的实例化 = 实例化类
在这里插入图片描述
如果创建了一个类的多个对象,则每个对象都独立的有一套类的属性(非static的)。意味着:如果我们修改一个属性A的值,则不影响另一个属性A的值

四.对象的内存解析
在这里插入图片描述
在这里插入图片描述
五.类中属性的使用
变量的分类
在这里插入图片描述
在这里插入图片描述

属性(成员变量) vs 局部变量
(一)相同点
1.定义变量的格式相同:变量类型 变量名 = 变量值
2.先声明后使用
3.变量都有其对应的作用域

(二)不同点
1.在类中的声明位置不同
属性:直接定义在类的{}里
局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
2.关于权限修饰符的不同
属性:可以在声明属性时,指明其权限,可以使用权限修饰符
(常用的权限修饰符:private,public,缺省,protected)
局部变量:不可以使用权限修饰符
3.默认初始化值的情况
属性:类的属性,根据其类型,都有对应的默认值
整型(byte,short,int,long):0
浮点型(float,double):0.0
字符型(char):0或者是’\u0000’
布尔型(boolean):false
引用数据类型(类,数组,接口):null

局部变量:没有默认初始化值。意味着在调用之前,我们一定要显式赋值。特别地,形参在我们调用时赋值即可。
4.在内存中加载的位置不同
属性:堆空间中(非static)
局部变量:栈空间中

六.类中的方法声明和使用
方法:描述类应该具有的功能
在这里插入图片描述
在这里插入图片描述
(一)举例
在这里插入图片描述
(二)方法的声明
权限修饰符 返回值类型 方法名(形参列表){
方法体
}
注意:static,final,abstract来修饰方法
说明
1.权限修饰符:private,public,缺省,protected(封装性细讲)
2.返回值类型:有返回值 vs 没有返回值

  • 如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时方法中,需要使用return关键字来返回指定类型的变量或常量
  • 如果方法没有返回值,在声明时使用void表示。通常不需要return,如果要则写成"return ;"表示结束此方法

3.形参列表
可为0个,1个,多个
格式:(数据类型1 形参1, 数据类型2 形参2)
4.方法体
主要方法功能的体现
(三)方法的使用

  • 可以调用当前类的属性,方法
  • 方法中不可以定义方法

六.JVM内存结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
七.万事万物皆对象

  • 在Java的范畴中,我们都将功能,结构等封装在类中,通过类的实例化,来调用具体的功能结构。
    Scanner, String等
    文件:File
    网络资源:URL
  • 涉及到Java语言与前端的Html,后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类, 对象。

八.匿名对象
1.理解:创建的对象,没有显式的赋给一个变量名,即为匿名对象
2.特征:匿名对象只能调用一次

九.再谈方法
方法的重载
在这里插入图片描述
十.可变个数形参的方法
在这里插入图片描述
在这里插入图片描述
十一.方法参数的值传递机制

  • 变量的赋值
    变量是基本数据类型,赋值是变量所保存的数据
    变量是引用数据类型,赋值是变量所保存的数据的地址值
  • 方法的形参传递机制:值传递
    1.形参:方法定义时,声明的小括号内的参数
    实参:方法调用时,实际传给形参的数据
    2.值传递机制
    参数是基本数据类型,实参赋给形参的是实参真实存储的数据值
    (例子:典型的交换两个值)
    在这里插入图片描述
    参数是引用数据类型,实参赋给形参的是实参存储数据的地址值
    在这里插入图片描述
    十二.方法的重写
    1.重写:子类继承父类之后,可以对父类的同名同参数的方法进行覆盖操作
    2.应用:重写以后,当创建子类对象之后,通过子类对象调用子父类中的同名同参数的方法时,实际上执行的是子类重写父类的方法。
    3.规定
    方法的声明: 权限修饰符 返回值类型 方法名(形参列表)throws 异常的类型{
    方法体
    }
    约定俗称:子类中的叫重写的方法,父类中叫被重写的方法。
    方法名和形参列表相同
    ②子类重写方法的权限修饰符不小于父类中被重写的权限修饰符。特殊情况:子类不能重写父类中声明为private权限的方法。
    ③返回值类型
  • 父类中被重写的方法返回值类型是void,则子类中的重写的方法返回值类型也只能是void。
  • 父类中被重写的方法返回值类型是A类,则类中的重写的方法返回值类型是A类或A的子类。
  • 父类中被重写的方法返回值类型是基本数据类型,则类中的重写的方法返回值类型必须是相同的基本数据类型。
    ④子类重写方法的抛出的异常类型不大于父类被重写方法的抛出的异常类型。
    ⑤子类和父类中的同名同参数的方法要么都声明为非static(考虑重写),要么都声明为static的(不是重写)。

构造器
一.作用

  1. 创建对象
    创建类的对象:new + 构造器
  2. 初始化对象的信息

二.说明

  1. 如果没有显式的定义类的构造器,则系统默认提供一个空参的构造器,构造器默认的权限就是类的权限。
  2. 定义构造器的格式:权限修饰符 类名(形参列表){}
  3. 一个类中定义的多个构造器,彼此构成重载
  4. 一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器。
  5. 一个类中,至少有一个构造器。

三.属性赋值的先后顺序

  • 默认初始化
  • 显式初始化
  • 构造器中初始化
  • 通过"对象.属性"或"对象.方法"的方式来赋值
    前三个只执行一次,最后一个可以反反复复执行

JavaBean
在这里插入图片描述
UML类图
在这里插入图片描述

代码块(初始化块)
1.作用:用来初始化类,对象
2.如果有修饰的话,只能使用static。因而分为两类:静态代码块vs非静态代码块
(1)静态代码块

  • 内部可以有输出语句
  • 随着类的加载而执行,而且执行一次
  • 初始化类的信息
  • 如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
  • 静态代码块的执行要优先于非静态代码块的执行
  • 静态代码块内只能调用静态的属性,静态的方法,不可以调用非静态的结构。
    (2)非静态代码块
  • 内部可以有输出语句
  • 随着对象的创建而执行
  • 每创建一个对象就执行一次非静态代码块。
  • 作用:可以在创建对象时,对对象的属性等进行初始化
  • 如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
  • 非静态代码块内可以调用非静态的结构,静态的结构。

对属性可以赋值的位置
①默认初始化
②显式初始化 / ⑤在代码块中赋值 (先写先执行)
③构造器中的初始化
④有了对象以后,可以通过"对象.属性"或者是"对象.方法"的方式,进行赋值。
执行的先后顺序:① – ② / ⑤ – ③ – ④

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值