1.定义方法
-
访问修饰符 返回值 方法名 (参数) { }
-
定义无参方法——小括号中没有参数
2.访问修饰符
访问级别 | 不同包 | 不同包下的子类 | 同一个包 | 同一个类 | |
---|---|---|---|---|---|
public (公共的、公有的) | 任何类都可以访问 | √ | √ | √ | √ |
protected(受保护的) | 在同一个包中,或不同包中的子类 | √ | √ | √ | |
缺省的(不写) | 在同一个包中可以访问 | √ | √ | ||
private(私有的) | 在同一个类中可以访问 | √ |
3.返回值
-
当方法执行完后,需要给出一个结果,可以使用带返回值的方法
-
public class Calc { double num1; double num2; //想要将什么类型的数据返回出去,返回值就写什么类型 //return 关键字后面是返回出去的数据 public double add() { return num1 + num2; } public static void main(String[] args) { Calc calc = new Calc(); calc.num1 = 10; calc.num2 = 20; double sum = calc.add(); System.out.println(sum); } }
-
注意声明方法时返回值类型语言与return的值一致
-
注意:
-
如果方法有返回值,必须写return语句(尽量少的return,可以在前面定义一个boolean变量,最后返回)
-
return语句和break、continue一样,不允许在后面写其他代码
-
有返回值的方法,应当接收返回值。
-
-
return的作用
-
给出结果
-
跳出方法
-
4.方法的调用
-
在同一个类中调用方法,可以直接写方法名()
-
如果在不同的类中调用方法,需要先实例化方法所在的对象,然后通过"对象名.方法名()"调用
-
package com.jxd.test01; /** * @author Ming WanBao */ public class Dog { private void bark(){ System.out.println("狗在汪汪叫!"); } public void playFly(){ System.out.println("小狗玩飞盘"); } /** * 吃饭 */ public void eat(){ System.out.println("小狗在吃饭"); } public void play(){ playFly();//玩飞盘 bark();//汪汪叫 } public static void main(String[] args) { Dog dog = new Dog(); dog.bark(); } }
-
package com.jxd.test01; /** * @author Ming WanBao */ public class Master { Dog dog = new Dog();//主人有一只狗 public void feed() { System.out.println("主人在喂狗"); dog.eat(); } public void playWithDog() { System.out.println("主人开始和小狗玩"); dog.play(); } public static void main(String[] args) { Master master = new Master(); master.feed(); } }
-
递归
-
方法调用方法本身,形成类似循环的效果,就是递归
-
使用递归时,需要注意何时结束递归
-
public class Test01 { public void query() { System.out.println("还要继续循环吗?y/n"); Scanner input = new Scanner(System.in); String answer = input.next(); if ("y".equals(answer)){ query(); } else { return;//无返回值的方法单独写return,可以起到跳出方法的作用 } } public static void main(String[] args) { Test01 test01 = new Test01(); test01.query(); } }
-
5.返回值类型可以是数组或对象
public class Test01 {
Scanner input = new Scanner(System.in);
//希望得到一组学生的成绩
public int[] getScores() {
int[] scores = new int[10];
for (int i = 0; i < scores.length; i++) {
System.out.print("请输入第" + (i + 1) + "个学生的成绩:");
scores[i] = input.nextInt();
}
return scores;
}
//希望得到一个学生对象
public Student getStudent(){
Student student = new Student();
System.out.print("请输入学生姓名:");
student.name = input.next();
System.out.print("请输入学生年龄:");
student.age = input.nextInt();
return student;
}
public static void main(String[] args) {
Test01 test01 = new Test01();
//int [] scores = test01.getScores();
//System.out.println(Arrays.toString(scores));
Student student = test01.getStudent();
System.out.println("学生姓名:" + student.name);
System.out.println("学生年龄:" + student.age);
}
}