java_DAY07:面向对象:方法


1:方法的定义

方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果

方法定义类的某种行为(或功能), 是功能的实现

记忆:

方法五要素:修饰符,返回值类型,方法名,参数列表,方法体。

public void show(){
    System.out.println("姓名"+name);
}

方法中返回值介绍

如果方法有返回值,方法中必须使用关键字return返回某个值,返回值类型为该值的类型,且返回值只能有一个。

return的作用:结束方法,返回结果。

注意:当调用有返回值的方法时,需要定义一个变量接受

如果方法没有返回值,返回值类型为void

有返回值:

public String getname(){
           return name;
}

无返回值:

public void show(){
       System.out.println("姓名:" + name );
}

2:方法的调用

问:如何调用一个类的方法?

明确:你要调用哪个类的哪个方法?

1:创建这个类的对象

2:对象名.方法名();

3:方法间的调用

情况 举例

Student类的方法a( )调用Student类的方法b( ),直接调用

public void a( ) {

    b( );    //调用b( )

Student类的方法a( )调用Teacher类的方法b( ),先创建类对象,然后使用“.”调用

public void a( ) {

    Teacher t = new Teacher( );

     t.b( ); //调用Teacher类的b()

 
   

2:方法的参数

方法五要素:修饰符,返回值类型,方法名,参数列表,方法体。

无参方法:

访问修饰符  返回类型  方法名() {
        //方法的主体
}
public void show(){
       System.out.println("姓名:" + name + ",年龄:" + age);
}

定义带参数的方法:

访问修饰符  返回类型  方法名(<形式参数列表>) {
        //方法的主体
}

调用带参数的方法:

对象名.方法名(参数1, 参数2,……,参数n)

有参方法的调用:

调用有参方法时,必须要传递对应类型的参数,否则报错。

3:构造方法

/学生类
public class Student {
    
    //属性
    String name;
    int age;
    String sex;

    //系统默认的无参构造方法,写和不写他都是存在的
    public Student() {
    }
    
    //有参构造方法,创建对象的时候就已经给了初始值了
    public Student(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}

作用:创建对象,初始化对象

特点:

1、无参构造方法,与类同名,不含返回类型。如果类中没有显示的构造方法,系统会给出默认的无参构造方法。

2、构造方法一般都是public的,才能被系统调用。

3、无参构造在给对象属性赋值时比较麻烦,可以定义有参的构造方法。

当成员变量(属性)和方法参数同名时,一般使用this表示当前对象,如:this.name = name;

4、构造方法经常用于程序初始化工作,例如:人出生要“洗澡”,就可以在人的构造方法时加入完成“洗澡”的程序代码,程序就不必每个人出时一个一个地告诉他们要“洗澡”了。

5、当类有了带参构造方法之后,系统不再自动生成默认的无参构造方法,若使用需重新定义

要求:如果一个类中有带参数的构造方法时,必须要定义无参的构造方法

6、构造方法只能用于创建对象时,不能在程序中像调用其他方法一样调用它,但是可以用this()的形式在其他构造方法中调用它,注意this()必须在第一行。

构造方法和普通方法的区别:

构造方法访问修饰符一般是public, 一般方法根据实际情况选择修饰符

构造方法没有返回值类型,一般方法要么无返回值-void,要么有返回值

方法名与类同名,一般方法见名思意,遵循驼峰命名规则

构造方法的方法体是对象的初始化代码,一般方法是功能的实现

调用方式不一致,普通方法需要使用对象来调用,构造方法是new, this, super

4:方法重载:overload

为什么会有方法的重载?

在同一个类中有一些方法的功能相同,仅仅是参数列表不一样,此时如果去定义不同的方法名很麻烦。

于是规定,方法名可以一样,但是参数列表必须不一样。所以就有了方法的重载。

方法重载的判断标准:同类同名不同参,与其他无关。(不同参:不同的参数列表:个数不同,类型不同,顺序不同)

如:构造方法,Arrays的很多方法都是重载的。