目标
方法
面向对象入门
一、方法
方法: 功能点,集中起来,命名方便使用和修改,可以理解为 : 手机手机后面有个卡槽,放具体的卡,手机才能使用。
作用
1)、可以避免main方法过于臃肿
2)、方便分析业务逻辑–>封装
定义
修饰符 void|返回值类型方法名([形参列表]){
//代码块 return
}
示例
for(int i=0;i<10;i++){ System.out.println(“helloWorld…”); |
放入到有名字的方法中:
可以归类为四种:
无返回无形参、无返回有形参、有返回无形参、有返回有形参:
//定义了一个方法方法的声明无形参无返回值 publicstaticvoid myPrint() { for(inti=0;i<10;i++){ System.out.println("helloWorld…"); } } //定义了一个方法方法的声明有形参无返回值 publicstaticvoid myPrint(int num ) { //打印整数 System.out.println(num+"输出了...."); } //定义了一个方法方法的声明无形参有返回值 publicstaticint add() { return 5+2; }//定义了一个方法方法的声明有形参有返回值 publicstaticint sum(inta, intb ) { //打印两个任意正整数之和 System.out.println((a+b)+"之和...."); //返回之和 returna+b; } |
调用
调用就是使用, [接收=]方法名([实参]),存在就近最优原则
实参和形参
实参就是具体的卡,形参: 卡槽
* 方法的声明与调用
* 1、声明格式(现阶段)
* public static void|返回值类型 方法名([形参列表]){
* //代码块
* }
* 1)、位置只能在类中
* 2)、方法不能嵌套
* 3)、方法的定义位置与调用顺序无关
* 2、方法的调用
* [接收变量=]方法名([实参列表]);
思考4个点
1、 根据方法的功能,确定方法的名字
2、 该方法是否需要外界数据的参与运算,如果需要,定义形参
3、 该方法执行完后对下一步操作是否存在影响,即调用处是否需要该方法的结果,如果需要,return 返回值
4、 该方法是否为static、成员
return 关键字
1、返回跳出方法,在所在的作用域内{} 不能再出现代码
2、如果存在返回值类型,必须存在return ,返回值,所有的情况下必须存在返回值。
3、如果没有返回值类型即void,可以存在return ,不能返回值,有选择的提前跳出方法。
方法的签名
组成:由方法名+形参列表 (类型顺序个数)
作用:在一个类中的唯一性,避免重复
在一个类中,方法名可以重复,但是方法签名必须唯一。
//方法的签名: absolute(int) publicstaticint absoulte(intnum){ if(num<0){ return -num; } returnnum; } |
方法的重载(overload)
两同三不同: 同一个类,方法名相同,签名不同 (形参类型个数顺序)
//方法的签名: add() public static int add(){ return 5+2; } //方法的签名: add(int) public static int add(int a){ return 5+a; } //方法的签名: add(int,int) public static int add(int a,int b){ return a+b; } //方法的签名: add(int,float) public static double add(int b,float a){ return a+b; } //方法的签名: add(float,int) public static double add(float b,int a){ return a+b; } |
作用: 功能相同的参数不同,为了调用方便,将命名为相同的方法
递归(recursive)
方法自己调用自己,类似循环
1、 递归体: 重复调用
2、 递归头: 何时结束递归
递归耗内存
//自己调用自己 publicstaticvoid myPrint(intnum){ if(num>9){ //何时结束递归 return ; } //递归体 System.out.println(num); myPrint(num+1); } |
二、面向对象
JAVA一切皆为对象,OOP(Object oriented programming)
类class
1、理解
抽象:抽出像的部分–>模板
复杂自定义的数据类型
2、编写类class : 数据(属性) +行为(方法)
模板
public class 类名{ //成员属性 public 类型属性名 [=初始值]; //成员方法 public 返回类型|void 方法名([形参列表]){ //方法体 } } |
如:
public class Cake { // 蛋糕的形状 //shape -->String public String shape; // 奶油的量 // cream -->int publicintcream; // 鸡蛋的量 // eggs -->int publicinteggs; // 水的量 //water -->int publicintwater; // 烤制时间 //bake -->String public String bake; // 其他配料 //others -->String public String others; // 制作过程 //makeCake()
publicvoid makeCake(){ System.out.println("使用了"+eggs+"个鸡蛋,用了"+bake+"时间,做出了"+shape+"形状的蛋糕"); } } |
publicclass Angel { //名字 public String name; //女孩 girl -->String public String girl; //翅膀 wing -->String public String wing ="1对"; //是否善良 goodness -->boolean publicbooleangoodness;
//帮助(); assist publicvoid assist(){ System.out.println(name+"拯救学习java的码农们...."); } }
|
对象(Object)
活生生的实例,数据ànew 类型();
1、格式:
类型引用名|对象名 = new 类型(); new 类型(); |
2、访问成员属性|变量
存在对象才能访问,不存在对象发生NullPointerException
1) 、存储:引用名.属性 =值
2) 、取值:引用名.属性
3、访问成员方法
存在对象才能访问,不存在对象发生NullPointerException
调用方法: [接收变量=]引用名.方法([实参列表])
new Angel(); //没有引用的称之为匿名对象只能使用一次 //创建了一个对象 angel 称之为引用变量,new Agel() -->对象 Angel angel=new Angel();
//为属性赋值 angel.girl ="女孩"; angel.goodness =true; angel.wing = "1双";
//调用方法 angel.assist(); //第二个引用变量,没有创建对象 intb =0; Angel angel2 =null; //java.lang.NullPointerException -->只有引用没有创建对象 //没有大盒子哪里来的小盒子 //没有对象不能访问数据、调用方法 angel2.girl ="女"; //System.out.println(angel2.girl); //angel2.assist(); |