构造器

1.什么是构造器

构造器通常也叫构造方法、构造函数,构造器在每个项目中几乎无处不在。当你new一个对象时,就会调用构造器。构造器格式如下:
[修饰符,比如public] 类名 (参数列表,可以没有参数){ //这里不能有return}
1. 必须和类的名字相同
2. 必须没有返回类型,也不能写void

2.构造器的作用

   1. 使用new创建对象的时候必须使用类的构造器
   2. 构造器中的代码执行后,可以给对象中的属性初始化赋值

3.怎么用构造器(还是不理解)

显式参数,就是平时见到的在方法名括号中间的参数,就是所谓能看得见的参数。
  隐式参数,是在类的方法中调用了类的实例域。这个被调用的实例域就是隐式参数。在

以下的这个类中调用了a.ariseSalary(100),就用到了隐式参数。

public class Abc
{
  private double salary;

  public Abc(){
    this(100.0);
  }
  public Abc(double aSalary){
    salary = aSalary;
  }
}

Abc a = new Abc();

a.ariseSalary(100);

在上面的类中,如果调用了这个方法salary是实例域,ariseSalary方法中的salary就是隐式
参数。如果在隐式参数的前面加上this,隐式参数就更清晰:

  public void ariseSalary(double em){
    double employ = this.salary * em;
    this.salary += employ;
  }

推荐在隐式参数的前面加上this操作符。this操作符代表的是本类。

无参构造器也可称作默认的构造器
在编写类的时候没有写构造器,那么在编译之后也会自动的添加一个无参构造器,这个
无参构造器也被称为默认的构造器。
如:
Student11 s11 = new Student11();

构造器重载 用this调用自身属性

   public Student11(String name){
            //可使用this关键字,在一个构造器中可以调用另一个构造器的代码。
        this.name = name; //调用name = "tom";
        this.name = "我用this.name改了name的值"; //调用name = "tom";
        name = this.name;//改不了,应该要用特殊的函数才能改

下面是示例代码

public class 构造器 {
   
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println("输出无参构造器的值"+s.name);
        Student11 s11 = new Student11();
        System.out.println("输出无参构造器的值"+s11.name);


            
    }
    // 无参构造器也可称作默认的构造器
    /*在编写类的时候没有写构造器,那么在编译之后也会自动的添加一个无参构造器,这个
无参构造器也被称为默认的构造器。 */
    public static class Student{
        private String name;
        public Student(){
        name = "tom";
        }
        }
    //构造器重载 用this调用自身属性
    public static class Student11{ //若Student11后加了()并定义了属性如String name,这样就不可以用Student11 s11 = new Student11();这种调用方式是无参构造器
        private String name;
        public Student11(){
        name = "tom11";
        }
        public Student11(String name){
            //可使用this关键字,在一个构造器中可以调用另一个构造器的代码。
        this.name = name; //调用name = "tom";
        this.name = "我用this.name改了name的值"; //调用name = "tom";
        name = this.name;//改不了,应该要用特殊的函数才能改

        }
        }
        
}

构造器

上一篇:unsafe.pointer 与 uintptr的区别


下一篇:vue实现单点登录的N种方式