方法
- 本质:可重复使用,可完成某个特定功能的代码片段
- Method(C语言中称函数)
- 方法定义在类体当中,在一个类当中可以定义多个方法,方法编写位置没有先后顺序,可以随意
- 方法体中不能再定义方法,方法体中的代码遵循自上而下的顺序依次执行
- 方法怎么定义,语法结构
[修饰符列表] 返回值类型 方法名(形式参列表){
方法体
} - 关于修饰符列表
- 不是必须
- 方法的修饰符列表当中有static关键字的话,怎么调用这个方法?
- 类名.方法名(实际参数列表);
- 合法标识符就行,见名知意,首字母要求小写,后面每个单词首字母大写
- 自定义方法:不是程序入口
- 方法重载
-
功能相似的时候,尽可能让方法名相同
[但是:功能不同/不相似的时候,尽可能让方法名不同。] -
条件:
在同一个类当中
方法名相同参数列表不同:数量不同
顺序不同
类型不同 -
方法重载和什么有关系,和什么没有关系
方法重载和方法名+参数列表有关系
方法重载和返回值类型无关
方法重载和修饰符列表无关
- 方法递归
- 耗费栈内存
- 必须有结束条件,否则会发生错误:java.lang.SackOverflowError 栈内存溢出错误,JVM停止工作
类和对象
-
什么是类
类在现实世界当中是不存在的,是一个模板,是一个概念。
是人类大脑思考抽象的结果
类代表了类事物在现实世界当中,对象A与对象B之间具有共同特征,进行抽象总结出一个模板,这个模板被称为类 -
什么是对象
对象是实际存在的个体。现实世界当中实际存在。
-
描述一下整个软件开发的过程:
- 程序员先观察现实世界,从现实世界当中寻找对象,寻找了N多个对象之后,发现所有的对象都有共同特征程序员在大脑中形成了一个模板[类]
- Java程序员可以通过java代码来表述一个类
- Java程序中有了类的定义
- 然后通过类就可以创建对象
- 有了对象之后,可以让对象直接协作起来形成一个系统。
类—【实例化】—对象(实例) instance
对象—【抽象】—类
-
类
- 属性:描述对象的状态信息
- 方法:描述对象的动作信息
-
定义类
- 语法结构:【修饰符列表】 class 类名{ }
对象的创建和使用
-
通过一个类可以实例化N个对象
-
实例化对象的语法:new 类名 ();
-
new是java语言当中的一个运算符
-
new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间
-
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中。
-
栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
-
堆内存: new的对象在堆内存中存储
-
引用:是一个变量,保存了另一个Java对象的地址(只能通过“引用”去服务呢堆内存当中对象内部的实例变量)
-
访问实例变量的语法格式:
- 读取数据:引用.变量名**(对象中的变量)**
- 修改数据:引用.变量名=值
public class Main{
public static void main(String[] args){
int i = 10;
Student s = new Student();
s.age = 20;
int stuAge = s.age;
System.out.println("年龄"+stuAge);
}
}
变量分类:
局部变量[方法体中声明]
成员变量[方法体外声明]
1.实例变量【前边修饰符没有static】
2.静态变量【前边修饰符中有static】
面向对象三大特征
-
封装
-
继承
-
多态
封装
-
好处
- 封装之后,对于那个事物来说,看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面。复杂性封装,对外提供简单的操作入口。照相机就是一个很好的封装的案例,照相机的实现原理非常复杂,但是对于使用照相机的人来说,操作起来是非常方便的是非常便捷的。还有像电视机也是封装的,电视机内存实现非常复杂,但是对于使用者来说不需要关心内部的实现原理,只需要会操作遥控器就行。
- 封装之后才会形成真正的"对象”,真正的“独立体”
- 封装就意味着以后的程序可以重复使用。并且这个事物应该适应性比较强,在任何场合都可以使用。
- 封装之后,对于事物本身,提高了安全性。[安全级别高]
-
步骤
-
所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。
-
对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问
- 对外提供两个公开的方法,分别是set方法和get方法
- 想修改age属性,调用set方法
- 想读取age属性,调用get方法
-
-
set方法的命名规范
public void setAge(int a){
age=a;
}
- get方法的命名规范
public int getAge(){
return age;
}
- setter and getter方法没有static关键字
- 有static关键字修饰的方法怎么调用: 类名.方法名(实参);
- 没有static关键字修饰的方法怎么调用: 引用.方法名(实参);
JavaDoc注释
- JavaDoc标签一般是以@作为前缀
- @author Laoxue 表示作者名
- @parameter 表示参数及其意义
- @version 1.0 表示版本号
- @throws //表示异常类及抛出的条件
- @create 2022年6月13日11:15:37