• 构造函数,This关键字


    构造函数:

    即构建创造对象时调用的函数。在new的时候自动执行,给对象进行初始化。创建对象都必须要通过构造函数初始化。(有参和无参)

    一个类中如果没有定义过构造函数,那么类中会有一个默认的空参数构造函数。

    特点:1.函数名与类名相同。

             2.无返回值

    实例变量的默认值:

      原始数字类型的实例变量默认值为0,布尔型变量为false,引用变量为null。

    例:

    class A
    {
        private int i;
        private int j;
        public A()
        {
            //System.out.printf("嘿嘿!
    
    ");
        }
        
        //构造函数        
        public A(int a, int b)
        {
            i = a;
            j = b;
            System.out.printf("无参构造函数被调用了!
    ");
        }
        
        public void show()
        {
            System.out.printf("i = %d, j = %d
    ", i, j);
        }
    }
    
    class TestConst_2
    {
        public static void main(String[] args)
        {
            A aa = new A(1, 2); //在定义的同时进行初始化,可用构造函数来完成。
            A aa3 = new A();        
        }
    }

    This关键字:

    当成员变量和局部变量重名,可以用关键字this来区分。

    this : 代表对象。代表哪个对象呢?当前对象。

              this就是所在函数所属对象的引用。

              简单说:哪个对象调用了this所在的函数,this就代表哪个对象。

    this也可以用于在构造函数中调用其他构造函数。

    注意:只能定义在构造函数的第一行。因为初始化动作要先执行。

    例:

    class Person
    {
        private String name;
        private int age;    
        Person()
        {       
            name = "baby";
            age = 1;
            System.out.println("person run");
        }   
        Person(String name) 
        {
            this();
            this.name = name;
        }
        Person(String name,int age)
        {
            this.name = name;
            this.age = age;     
        }
        public void speak()
        {
            System.out.println(this.name+":"+this.age);
        }
    
        /*
        判断是否是同龄人。***(思想)只用了一个参数***
        */
        public boolean compare(Person p)
        {
            /*
            if(this.age==p.age)
                return true;
            else
                return false;
            */
            return this.age==p.age;
        }
    
    }
    
    class ThisDemo 
    {
        public static void main(String[] args) 
        {
    
            Person p1 = new Person("aa",30);//
            Person p2 = new Person("zz",12);
    
            p2.compare(p1);
    //      new Person();
    //      Person p = new Person("旺财",30);
    //      p.speak();
    //      Person p1 = new Person("小强");
    //      p1.speak();
        }
    }
  • 相关阅读:
    AcWing 2476. 树套树(线段树套splay)
    LeetCode 1191 K 次串联后最大子数组之和
    LeetCode 668 乘法表中第k小的数
    Java003-String字符串
    云原生CD工具spinnaker部署(容器化灰度发布)
    刷题日记
    8.22 校内模拟赛 题解报告
    关于 CDQ分治(复习)
    解题营_数论
    解题营_动规
  • 原文地址:https://www.cnblogs.com/kkkky/p/6572193.html
Copyright © 2020-2023  润新知