day05面向对象第1天学习(总结)

2、basic

3、this指针

4、construction

构造方法的作用

构造方法是创建对象的最后一步,是帮助我们给成员变量赋值的。这个方法不是我们自己调用,而是jvm自动调用的【核心理解这一点就好了】

public class Demo {
    
    
    public static void main(String[] args) {
    
    
        
        Teacher t4 = new Teacher("语文", 30);//我想创建对象的过程中,我就直接赋值
        t4.print();//成员方法print
        /*System.out.println(t4.age);
        System.out.println(t4.course);*/

        /*//这么多构造方法,怎么知道调用哪一个?
        Teacher t3 = new Teacher(16);
        System.out.println(t3.age);         //16
        System.out.println(t3.course);      //null
        */
    }
}
class Teacher {
    
    
    //定义成员变量
    String course;//课程
    int age;

    //定义Teacher的构造方法
    public Teacher(){
    
    

    }
                   //定义有参的构造方法
    public Teacher(String course, int age) {
    
    
        //赋值,把方法传入的局部变量 赋值给当前对象的成员变量
        //this.course代表当前对象的course成员变量
        //后面的course是方法传入的参数 局部变量
       /* this.course = course;
        this.age = age;*/

       //使用this关键字调用后面两个单参数的构造方法
        //Call to 'this()' must be first statement in constructor body
        this(course);
        this.age = age;
        //this(age);   //error
    }
                   //定义一个单参数的构造方法
    public Teacher(String course){
    
    
        //赋值,把方法传入的局部变量 赋值给当前对象的成员变量
        this.course = course;
    }
                   //定义一个单参数的构造方法
    public Teacher(int age){
    
    
        //赋值,把方法传入的局部变量 赋值给当前对象的成员变量
        this.age = age;
    }
    
   //定义一个成员方法
   public void print(){
    
    
       System.out.println(this.course);
       System.out.println(this.age);
   }
}

构造方法(构造器)的一些重要细节

  1. 当一个类中没有显式的定义构造方法,这个时候JVM会默认提供一个无参构造方法
  2. 当一个类中显式的定义了有参构造方法,那么就不会提供默认无参构造方法了 Generate后直接选择生成多个构造方法 (mac系统没找见INSERT键)

定义了一个有参构造后,养成好习惯,必须要给这个类添加上无参构造
.
后面框架当中,有些框架会去自动调用无参构造创建对象

  1. 构造方法也是方法,既然是方法,可以方法重载
  2. 构造器当中也可以使用this关键字

1、可以调用当前类的别的构造方法 语法是this(参数列表)
特别注意:使用this调用别的构造方法,该this必须在构造方法的第一行,所以只能用一个this
2、可以使用this关键字调用当前对象的成员变量和成员方法
.
注意:最好的情况下,就让构造方法专注于创建对象,其他的事情不要管

  1. 构造方法不是普通方法,更不是成员方法,这个方法不是给程序员调用的,而是给jvm调用的后面有反射,相当于可以间接使用

猜你喜欢

转载自blog.csdn.net/AC_872767407/article/details/113406689