栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVASE基础(this引用)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVASE基础(this引用)

一:this引用的基本知识点

(1)定义:this是一个引用类型,保存了内存地址,在堆中的每一个java对象上都有this,保存内存地址指向自身(比如:门牌号))让该引用参数指向当前对象。

(2)特性:

          1.this可以用在成员方法中

          2.this可以用在构造方法中

                   语法:this(实参)

                   通过一个构造方法去调用另一个构造方法

                   目的:代码重用

                   this(实参) 必须出现在构造方法的第一行

           3.this不能用在静态方法中

           4.this可以用来区分成员变量和局部变量

           5. this引用的类型:对应类类型引用,即那个对象调用就是那个对象的引用类型

二:this的用法

(1)this用在成员方法中,调用类中的属性

代码示例:

ackage This;
//this能用在成员方法中,就是当前对象
public class Thistest02 {
    public static void main(String[] args) {
        //创建对象
        EmpLoyee e = new EmpLoyee(123,"ABC");
        //调用工作方法
        e.work();
    }
}
class EmpLoyee{
    //成员变量
    int empno;//员工编号
    String  ename;
    //Constructor
    EmpLoyee(int _empno,String _ename){
        empno = _empno;
        ename = _ename;
    }
    //提供一个员工在工作的方法
    //this用在成员方法中,谁去调用这个成员方法,this就代表谁
    //this指的就是当前对象
    public void work(){
        System.out.println(ename+"在工作");
        //System.out.println(this.ename+"在工作");//this.可以省略
    }
}

//运行结果:ABC在工作

注意:this可以省略

           this表示当前对象引用(注意不是当前对象).

(2)this可以用在构造方法中,调用类中的方法

代码示例:

package This;

public class Thistest05 {
    public static void main(String[] args) {
        Person p1 = new Person();//调用不带参数的构造函数 如果程序没有提供会调用不带参数
        //的构造函数
        p1.show();
        Person p2 = new Person("zhangfei",80,"男");//调用带有3个参数的构造函数
        p2.show();
    }
}
class Person {
    private String name;//实例成员变量
    private int age;
    private String sex;

    //默认构造函数   构造对象
    public Person() {
        this.name = "caocao";
        this.age = 10;
        this.sex = "男";
    }

    //带有3个参数的构造函数 注意此时形参的命名和属性的命名一样
    public Person(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public void eat() {
        System.out.println(this.name + " 正在吃饭!");
    }
    public void show() {
        System.out.println("name: " + this.name + " age: " + this.age + " sex: " + this.sex);
        //在show方法当中,通过this引用来调用本类的eat方法
        this.eat();
    }
}

(3)this可以用在构造方法中,调用自身的构造方法

代码示例:

public class Thistest01 {
    public static void main(String[] args) {
        //创建对象
        MyDate md = new MyDate();//调用不带参数的构造函数
        System.out.println(md.year+"年"+md.month+"月"+md.day+"日");
    }
}
//日期
class MyDate{
    //Field成员变量
    int year;
    int month;
    int day;
    //Constructor构造方法
    //需求:在创建日期对象时,默认的日期是:1970—1—1
    MyDate(){
        this(1970,1,1);//必须放在第一行进行显示
    }
    MyDate(int _year,int _month,int _day){
        year = _year;
        month = _month;
        day = _day;
    }
}

//运行结果:1970年1月1日

注意:需要在一个构造方法当中,调用当前类的另外一个构造方法的时候,通过this()的形式调用。 必须放在第一行,且只能调用一个。

(4)this不能用在静态方法中,如果想用,得在静态方法中重新创建对象。

代码示例:

public class Thistest04 {
    public static void main(String[] args) {
        Person.m1();
    }
}
class Person{
    //Field
    String name;

    //Constructor
    Person(){}
    Person(String name){
        this.name = name;
    }
    //静态方法
    public static void m1(){
        //System.out.println(this.name);编译错误
        //如果想访问name只能
        Person p1 = new Person("刘德华");
        System.out.println("p1.name");
    }
}
//静态方法的执行根本不需要java对象的存在,直接使用类名.的方式访问
//而this代表的是当前对象,所以静态方法中根本没有this

(5) this可以用来区分成员变量和局部变量

代码示例:

package This;

public class Thistest03 {
    public static void main(String[] args) {
        Manager m1 = new Manager("KING");
        Manager m2 = new Manager("KING");
        m2.setName("EFG");

        System.out.println(m1.getName());
        System.out.println(m2.getName());
    }
}
class Manager{
    //Field
    private String name;
    //Constructor
    Manager(String name){}

    //Method成员方法
    public void setName(String name){
       this.name = name;//this.name就是上面的成员变量name,之前用_name区分,现在不用了
    }
    //成员方法
    public String getName(){
        return this.name;//=return name;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号