面向对象02:方法的重载

一、重载(overload)

  1. 发生在一个类中

  2. 方法的签名:方法名+参数列表。一个类中有且只有一个签名

  3. Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload)编译器根据签名绑定调用方法。注:视为方法名相同的不同方法

例如:System.out.println(); 其中println()使用了方法的重载。

/**
 * 1.同一个文件中,可以包含多个类(实际中只能写一个)
 * 2.public的类只能有一个
 * 3.必须和文件命相同
 */
public class OverloadDemo {
    
    
    public static void main(String[] args) {
    
    

    }
}
class Aoo{
    
    
    void say(){
    
    }
    void say(String s){
    
    }
    void say(String s, int num){
    
    }
    void say(int num, String s){
    
    }
//    void say(int num, String asd){}与参数名称无关,与类型有关
//    int say(String s, int num){return 0;}重载与返回值无关
}

二、构造方法

作用:

  1. 给成员变量赋值;

  2. 构造方法名与类名相同,没有返回值类型;

  3. 在new对象的时候被调用;

  4. 类有一个默认的无参构造方法,如果存在有参构造(建议必要写一个无参构造方法),不会调用无参构造方法;

  5. 构造方法可重载。

三、this

  1. 只能用在方法中,方法中使用成员变量,默认前面都有一个this

  2. 方法访问成员变量时使用this(可以被省略),构造方法中不可省略。

  3. 当成员变量和局部变量重名时,this不能省略

  4. this表示该对象的代词,那个对象调用方法,this就是该对象。谁调就是谁;

注意:数字、_、$在特殊情况下使用

用法:

  1. 访问成员变量:this.成员变量名

  2. 调用方法:this.方法名()(一般不用)

  3. 调用构造方法:this()

/**
 * 学生类
 */
public class Student {
    
    
    private String name;
    private int age;
    private String address;

    public Student() {
    
    
        this(null);
    }

    public Student(String name) {
    
    
        this(name,0);
    }

    public Student(String name, int age) {
    
    
        this(name,age,null);
    }

    public Student(String name, int age, String address) {
    
    
        this.name = name;
        this.age = age;
        this.address = address;
    }
}
/**
 * 在同一个包中类,可以直接使用包下的其他类不需要导包
 */
public class StudentText {
    
    
    public static void main(String[] args) {
    
    
        Student student = new Student();
        Student student1 = new Student("xiangming");
        Student student2 = new Student("asdf",23);
        Student student3 = new Student("wsdf",12,"sdfsafd");
        System.out.println("student = " + student);
        System.out.println("student1 = " + student1);
        System.out.println("student2 = " + student2);
        System.out.println("student3 = " + student3);
    }
}

null和nullpointerexception

null:空,没有任何指向,此时再去点,必定会报空指针异常

引用类型之间画等号

赋值的是地址,多个引用指向同一个地址,其中一个内容修改,必定会影响其他引用的值,因为指向相同。

基本数据之间划等号

赋值的是实际的值,对一个值修改,其他的不变,互不影响

public class NullDemo {
    
    
    public static void main(String[] args) {
    
    
        Student student = new Student("lj",12,"asdf");
        //赋值的是地址
        Student ls = student;
        System.out.println("student = " + student);
        ls.setAge(18);
        System.out.println("student = " + student);
	
        int a = 5;
        int b = a;
        //对值的修改
        b = 6;
        System.out.println("a = " + a);
        //将student设置为空,此时会有异常
        student = null;
        System.out.println("student = " + student.getAge());
    }
}

最后声明,以上内容是自己的学习、总结的,分享给大家。如果有不当的地方还请大佬指正交流!

猜你喜欢

转载自blog.csdn.net/L_jianjian/article/details/114419839