方法
什么是方法?
方法就是具有一定功能的代码块。
为什么用方法
- 划分功能块(利于开发和维护)
- 可以让代码块重新执行
- 方法也是一种封装( 不问细节,只管调用)
方法的介绍 :
方法就是具有一定功能的代码块
注: java中我们叫方法, 叫其它语言中叫函数, 所以注意方法和函数是一个概念。
方法格式(语法)
修饰符 返回值类型 方法名( 参数类型 参数名1 , 参数类型 参数名2){
//方法体
return 返回值;
}
修饰符: 目前的修饰符,就写 public static
返回值类型 : 就是功能结果的数据类型, 没有返回用void 关键字。
方法名: 给代码块取一个见名知义的名称,符合规则即可,方便进行调用。
参数:
形式参数: 就是在方法定义上的参数, 用于接收实际参数
实际参数: 调用(使用)方法时,实际进行参与的参数
形参与实参的关系: 拷贝(复制)
参数类型: 数据类型
参数名 : 变量名
return : 结束这个方法;
注: 没有返回值,也可以使用return ,用: return; 表示结束方法。如:
public void show(){
//方法体
return;
}
方法的调用:
方法的调用:不调用方法,方法的代码就不会执行
如何调用方法:
方法名();
//有明确返回值的方法,单独调用没有任何意义
// 1. 单独调用没有任何意义
// zhaZhiJi("苹果");
// 2. 输出调用,但是这种方式也是最好的,因为不一定进行输出
System.out.println(zhaZhiJi("苹果"));
// 3. 赋值调用(推荐)
String str = zhaZhiJi("苹果");
System.out.println(str);
方法的分类
根据返回值,参数可以分四类:
无返回值无参函数
无返回值有参函数
有返回值无参函数
有返回值有参函数
写方法的一个原则: 高内聚,低耦合
方法的注意事项
- 方法不调用不执行
- 方法和方法是平级关系,不能嵌套定义
- 方法定义的参数用 “ , ”隔开
- 方法调用的时候传递的参数不用在前面写数据类型,直接写变量名( 实参不用写数据类型)
- 如果一个方法有明确的返回值类型,一定要用return带回一个值。如果是void,return可以省略不写
- 当方法的返回值类型是void的时候,只能单独直接调用
- 当我在调用一个方法的时候,这两个方法的局部变量没有任何关系
方法的重载(overload)
Java 允许方法名相同,但是参数类型不相同,或者参数的个数不同.。 这种就叫做方法的重载**(在一个类中)**。
方法重载与返回值类型,没有任何关系。
class Student{
public void show(){
//方法体
}
public void show(参数类型 参数名){
//方法体
}
public void show(参数类型 参数名,参数类型 参数名){
//方法体
}
}
面向对象
面向对象的介绍
OO (Object Oriented) : 面向对象
OOP(Object Oriented Programming): 面向对象编程
面向对象是一种思想. 以对象为基础
面向过程也是一种思想,以函数(方法)基础
面向过程与面向对象的区别
面向过程与面向对象都一种编程思想;
面向过程: 一步一步实现,具体功能步骤
面向对象: 创建类,根据类去new 具体的对象,然后调用对象的方法。
面向对象的特点
- 更符合我们的思考习惯
- 把复杂问题给简单化
- 让我们从执行者变成一个指挥者
对象太多了,每个实现不方便? 对对象进行划分类别(分类)
如何面向对象去开发?
有对象? -> 通过类, 生产去对象
模型 创建具体对象
怎么去写类, 把相同对象的信息,行为给他抽象出来
类的内容有哪些呢? 信息和行为
如:
学生类
信息: 姓名, 年龄, 地址, 家乡,学号,学校,专业
行为: 上课,写作业
面向对象思想:
写类 ( 信息和行为)
根据类如何产生对象:
类名 对象名 = new 类名();
类和对象的关系
类: 具有相同属性和行为一组对象的集合, 类是对对象的抽象
对象:是一个具体的事物。
类和对象的关系:
类是对对象的抽象 ,对象是类的实例(具体的)。
类的组成:
信息 ( 属性) - 变量
行为 (方法) - 方法
创建类
语法:
修饰符 class 类名{
// 属性
// 方法
}
// 修饰符 public : 公共的
**类名: 符合标识符的命名规则 **。
规范: 首字母大写,后面驼峰。
注: 一个java文件中可以写多个类, 但是一个Java文件中,只能一个public 修饰的符, 并且 public 修饰的类名和文件名要一致
// 规范: 一个 java 文件只有一个类。
定义类的属性
修饰符 数据类型 属性名;
public int maxNum;
属性名 首字母小写,后面驼峰(小驼峰)
定义类的行为(方法)
修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2 .....){
// 方法体
return 返回值
}
方法名 首字面小写,后面驼峰(小驼峰)
如何创建对象
对象:是类的实例
怎么产生对象(new 一个)。
类相当于一个模型,new 类名()相当于根据模型产生的一个具体的对象。
类名 对象名 = new 类名() ;
//假设有一个学生类Student
Student stu = new Student();
// new 对象时, 会给属性给默认值
// 基本类型
// int byte short long : 默认值 0
// float double 默认值 0.0
// boolean 默认值 false
// char 默认值 '\u0000'
// 引用类型( 默认值 : null)
获取对象的属性
对象名.属性名;
对象的属性赋值
对象名.属性名 = 值;
获取对象的方法
对象名.方法名();
成员变量与局部变量
以变量的位置进行分类:
可以分为: 成员变量和局部变量。
成员变量: 类中方法外。
局部变量:在方法的内部(包括方法里,及方法的声明-形参)。
成员变量与局部变量的区别
1. 在类中的位置不高
成员变量: 类中方法外
局部变量: 在方法的内部(包括方法里,及方法的声明-形参)
2. 作用的范围不同
成员变量: 类中都可以使用
局部变量:只有定义应该变量的方法可以使用
3. 在内存中的位置不一样
成员变量: 在堆内存中
局部变量:在栈内存中
3. 初始值不同
成员变量:有默认初始化
局部变量:没默认的初始化,必须赋值后才能使用
4. 生命周期不同
成员变量: 随着对象的创建而存在,随着对象的销毁而销毁
局部变量:随着方法的调用而存在,随着方法的执行完成而消失
匿名对象
平时对象再创建时,都会取一个名字
类名 对象名 = new 类名();
匿名对象概念: 就是没有名字对象
new 类名();
//不能单独使用
应用场景:
A: 调用方法,仅仅只调用一次的时候
如: new Studnet().hello();
B: 可以作为实参进行传递
xx.show(new Student());
注: new Student() 实际上是一个实例对象。