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

Java之this关键字

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

Java之this关键字

1.this的引出

public class A
{

   
    public static void main(String args[])
{    
    Dog dog=new Dog("老王",18);

        }
}
class Dog{

    String name;
    int age;
    public Dog(String Dname,int ages){
    name=Dname;
    age=ages;
        } 
    
}

看一下

Dog的自定义构造器

public Dog(String Dname,int ages){
    name=Dname;
    age=ages;
        } 
    

这样写参数列表必须和属性不同名

如果可以

public Dog(String name,int age){
    name=name;
    age=age;//注意,这种写法是错误的因为就近原则
        } 
    

就好了,但是是错误写法

这么把它变成

属性的name=方法里的参数name

这里就要用到this关键字了

2.this

public Dog(String name,int age){
    this.name=name;
    this.age=age;
        } 
    

这样就可以完美解决上面的问题

this.属性

代表当前对象的属性

在内存中看,是堆中创建个变量指向自己(默认生成)

this对应当前对象

dog1里的this是dog1

dog2里的this是dog2

是区分开的

什么叫当前对象

就是谁调用构造器设就是当前对象

例如

Person p1=new Person("xiaoyuan",18);
//相当于p1指向的空间是当前对象,当然你也可以理解为p1是当前对象
//当它执行构造方法时
//里面的this.name和this.age被替换成了p1.name和p1.age
//当然你创建别的对象也会替换成对应的

3.this使用注意细节 

简单来时,哪个对象调用,this就代表哪个对象

细节1和细节2

防止属性和局部变量的重名

导致调用不了属性

细节3可以在继承中用本类方法而不是调用子类的继承方法(重点)

细节4

只能在构造器里调用重载的构造器(不能在成员方法掉构造器)

!!!调用的构造器必须放在第一句

而且只写this(); 

这里体现一下构造器里调用构造器的好处 

实现的是对job,salary

name,gender,age

和五个变量一起

所以可以先定义少的构造器

而后全部一起的调用这个构造器,可以减少一定代码量

class Employee{
    String name;
    char gender;
    int age;
    String job;
    String salary;
    public Employee(String job,String salary){
        this.job=job;
        this.salary=salary;
    }
    public Employee(String name,char gender,int age){
        this.name=name;
        this.age=age;
        this.gender=gender;

    }
    public Employee(String name,char gender,int age,String job,String salary){
    this(name,gender,age);//调用一个构造器
        this.job=job;
        this.salary=salary;
    

    }
}

可以减少代码量

 

 细节5

this与对象关联

都是在堆里面的


    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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