首页 > 其他 > 详细

构造方法与 This关键字的特性与作用

时间:2019-04-21 11:12:33      阅读:110      评论:0      收藏:0      [点我收藏+]

1.构造方法

构造方法是一种特殊的方法,专门用于构造/实例化对象。

构造方法根据是否有参数分为无参构造方法和有参构造方法。

1.1无参构造方法

无参构造方法就是构造方法没有任何参数。无参构造方法在创建(new class类名())时调用;无参构造方法一般用于给属性赋默认值。语法:

[修饰符]  类名(){

  ....... 

}

 

例如:

 1 public class Dog{
 2     
 3     String name;
 4     int health;
 5     int love;
 6     String strain;
 7     
 8     public Dog(){
 9         System.out.println("构造方法");
10         health = 100;
11         love = 0;
12     }
13 14 }

如果开发中没有定义无参构造方法,jvm(虚拟机)默认给类分配一个无参构造方法。

1.2有参构造方法

当构造/实例化对象时,可以向方法中传递参数,这样子构造的方法叫有参构造方法。

语法:

 

[修饰符] 类名(Type arg1,Type arg2,…){
    // 初始化代码
}

 

注:有参构造方法与无参构造方法是方法重载。

1.2.1有参构造常见的问题

如果一个类中提供了有参构造的方法,则JVM(虚拟机)中就不再给该类分配无参构造。

例如:

public class Dog{
   String name;
    int health;
    int love;
    String strain;
    
    public Dog(String _name,int _health,int _love,String _strain){
        name = _name;
        health = _health;
        love = _love;
        strain = _strain;
    }
 1 public class TestCar{
 2     public static void main(String[] args){
 3         Dog dog = new Dog();   //调用无参构造方法
 4         dog.name = name;
 5         dog.health = 100;
 6         dog.love = 0;
 7         dog.strain = strain;
 8 
 9 
10         }
11 }                        

运行结果出错:

技术分享图片

注意:在开发过程中,如果开发者提供了有参构造方法,一定要习惯性的提供无参构造。

 2.This关键字

对象初始化内存图

技术分享图片

对象初始化内存图中的方法区位于栈和堆内存的上方,用于保存class和各种方法,对象初始化的过程中最先把class加载该区域,读取class文件中定义的属性和方法,根据定义的属性计算申请内存需要的字节数。

然后用 new在堆中申请内存并初始化内存。并在堆中生成This关键字,This中存放的是该对象本身的地址,也就说当调用This关键字时,还是指向对象本身。this可用于访问本对象属性,同时解决局部变量和成员变量同名的问题(成员变量可以用this.成员变量名代替)。

例如

1 public Dog2(String name,int health,int love,String strain){
2 System.out.println("this:"+this);
3     this.name = name;  //this.name代表的就是成员变量(成员属性),name代表的是你输入名。
4     this.health = health;
5     this.love = love;
6     this.strain = strain;
7 }

技术分享图片

通过打印this中的引用,可以看出对象dog和this指向同一内存。

一般而言,dog用于类的外部,this用于类的内部。因为类的内部根本不知道dog变量名的存在。

构造方法与 This关键字的特性与作用

原文:https://www.cnblogs.com/ruckly/p/10743432.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!