• 构造器


    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;//改不了,应该要用特殊的函数才能改
    
            }
            }
    }
    
    
    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    C
    大数模板
    51Nod 1040 最大公约数之和
    欧拉函数
    51Nod 1384 全排列
    B
    A
    B. Mancala (Codeforces Round #478 (Div. 2))
    I
    Requests 入门
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15096314.html
Copyright © 2020-2023  润新知