10.面向对象

一、定义

  类或对象行为特征的抽象,用来完成某个特定的功能。

二、作用

  将功能封装进对象,实现代码重用,简化代码。

三、分类

 

 四、具体说明

1.方法的声明格式

 

 其中:

①权限修饰符:可以被private、缺省、protected、public等修饰

②返回值类型:

  > 没有返回值:void修饰(如果一定要返回的话,使用return;表示结束此方法的意思)

  > 有返回值:必须声明其返回值类型,在方法体中必须使用“return 数据”的方式返回数据

③方法名:属于标识符,符合标识符的命名规则和规范

④形参列表:可以包含0个、1个或多个,且必须指明其类型,不同参数之间用“,”隔开

⑤方法体:方法具体功能的实现

⑥返回值:方法在执行完毕后返回给调用它的程序的数据

2.注意点:

①方法的使用中,可以调用当前类的属性和方法;

②方法中不能定义方法。

五、举例

public class test {
    public static void main(String[] args) {
        Person p = new Person();
        p.name = "张三";
        p.age = 19;
        p.sex = 1;
        p.study();//studying
        p.showAge();//年龄为:19
        p.addAge(2);
        p.showAge();//年龄为:21
    }
}

class Person{
    String name;
    int age;
    int sex;

    public void study(){
        System.out.println("studying");
    }

    public void showAge(){
        System.out.println("年龄为:" + age);
    }

    public int addAge(int i){
        age += i;
        return age;
    }
}

六、return关键字的使用

1.使用范围:使用在方法体中

2.作用:

  ①结束方法;

  ②针对有返回值的方法,可以通过“return 数据”的方式返回所要的数据

3.注意点:return后不能声明执行语句

七、再谈方法

1.方法的重载

定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

总结:“两同一不同”:同一个类,同一个方法名;参数列表不同。

举例:

class Person{
    String name;
    int age;

    public void getSum(int i, int j){
        System.out.println("1");
    }

    public void getSum(double d1, double d2){
        System.out.println("2");
    }

    public void getSum(String s, int i){
        System.out.println("3");
    }

    public void getSum(int i){
        System.out.println("4");
    }
}

2.可变个数形参的方法

说明:

1.JDK5.0新增的内容

2.声明方式:方法名(参数类型 ... 参数名)

3.可变个数形参可代表0个、1个、多个对应的实参

4.可变个数形参的方法与同名的方法彼此之间构成重载

5.方法中如果有可变形参,也有其它形参,可变形参要放在最后

6.一个方法中只能声明一个可变形参

举例:

public class test {
    public static void main(String[] args) {
        Person p = new Person();
        p.show(2);
        p.show("alex");
        p.show("str1", "str2", "str3");
    }
}

class Person{
    public void show(int i){

    }

    public void show(String s){
        System.out.println("1");
    }

    public void show(String ... strings){
        System.out.println("可变形参");
        for (int i = 0; i < strings.length; i++) {
            System.out.println(strings[i]);
        }
    }
}

3.Java的值传递机制

形参:方法声明时的参数

实参:方法调用时实际传递给形参的参数

Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。

  > 形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参

  > 形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参

举例:

public class test {
    public static void main(String[] args) {
        int x = 5;
        System.out.println("修改之前:x = " + x);//5
        change(x);
        System.out.println("修改之后:x = " + x);//5
    }

    public static void change(int x) {
        System.out.println("change:修改之前x = " + x);//5
        x = 3;
        System.out.println("change:修改之后x = " + x);//3
    }
}
public class test {
    public static void main(String[] args) {
        Person obj = new Person();
        obj.age = 5;
        System.out.println("修改之前age = " + obj.age);// 5

        change(obj);
        System.out.println("修改之后age = " + obj.age);// 3
    }
    public static void change(Person obj) {
        System.out.println("change:修改之前age = " + obj.age);//5
        obj.age = 3;
        System.out.println("change:修改之后age = " + obj.age);//3
    }
}

class Person{
    int age;
}

 

 

 

 4.递归方法

定义:一个方法的方法体内调用它自身。

注意:递归方法必须要有结束条件,否则会出现死循环。

public class test {
    public static void main(String[] args) {
        System.out.println(getSum(10));//3628800
    }

    //计算n!
    public static int getSum(int n){
        if (n == 1){
            return 1;
        }else{
            return n * getSum(n - 1);
        }
    }
}

 

 

作者:Java之美

日期:2020-03-28

10.面向对象

全文结束