自学内容网 自学内容网

初识Java(三)

一、类和对象

Java语言是面向对象语言,通过对象与对象之间的交互,完成一个一个的任务。

例:要盖出一间房子,要有一张图纸。

类就好比是那张图纸,对象就好比是那一间房子。

房子是根据图纸盖出来的,对象是根据类创建出来的。

  • 一个Java文件一般只定义一个类。
  • public修饰的类要与文件名相同。
  • 改变类名,通过设置去改,在文件中手写去改,只能改文件里面的,文件名不会改。

二、this引用

1、this引用 指向当前对象

        由于this只存在于成员方法当中,所以当前对象指的是调用此成员方法的对象。所有对此方法中成员变量的操作,都是通过this完成的,只不过用户看不见,是编译器自动进行的。下面两个问题有利于对这句话的理解。

  • 写出一个类,类中有成员变量和方法,实例化出了两个对象date和date2,去调用成员方法完成对象的赋值,那么此时,成员方法只有一个阿,但是对象有两个阿,它是怎么知道是对哪个对象赋值的呢?
public class Date {
    private int year;
    private int month;
    private int day;
    public void setDate(int y,int m,int d){
        year = y;
        month = m;
        day = d;
    }
    public static void main(String[] args) {
        Date date = new Date();
        date.setDate(2001,5,7);
        Date date1 = new Date();
        date1.setDate(2001,5,13);
    }
}

 因为成员方法有一个隐藏的参数,这个参数是this,它是一个引用变量,简称this引用,当对象去调用成员方法时,对象的值会传给this,那么在成员方法内,它就会知道是给哪个对象赋值了。

public class Date {
    private int year;
    private int month;
    private int day;
    public void setDate(Date this,int y,int m,int d){
        this.year = y;
        this.month = m;
        this.day = d;
        //在成员方法中,给成员变量加上this
    }
    public static void main(String[] args) {
        Date date = new Date();
        date.setDate(2001,5,7);
        Date date1 = new Date();
        date1.setDate(2001,5,13);
    }
}
  • 当把值传给成员方法,形参接收后,发现形参与成员变量的名字相同时,那成员方法给谁赋值呢?是让形参给对象的变量赋值,还是让形参自己给自己赋值呢?
public class Date {
    private int year;
    private int month;
    private int day;
    public void setDate(int year,int month,int day){
        year = year;
        month = month;
        day = day;
    }
    public static void main(String[] args) {
        Date date = new Date();
        date.setDate(2001,5,7);
        Date date1 = new Date();
        date1.setDate(2001,5,13);
    }
}

      根据局部变量优先原则,形参是局部变量,所以是优先给形参赋值。为了不让它识别为形参,在方法中的变量前加上this,代表是对象中的变量,也就是成员变量。

public class Date {
    private int year;
    private int month;
    private int day;
    public void setDate(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }
    public static void main(String[] args) {
        Date date = new Date();
        date.setDate(2001,5,7);
        Date date1 = new Date();
        date1.setDate(2001,5,13);
    }
}

2、this引用的特点

  1. 只存在于成员方法当中。
  2. 只能引用当前对象。
  3. 哪个对象调用,this的类型就是哪个对象的类型。
  4. this在成员方法中是隐藏的参数。

原文地址:https://blog.csdn.net/weixin_53908084/article/details/140673703

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!