JAVA的学习日记13

Java构造器

大佬博客指路

定义声明:
构造方法的名字必须和所在类的名字一致,没有返回值,但不能声明void,访问权限可以为任意,但是一般情况下使用public方法权限,构造方法中的参数可以根据需要自行定义,参数的不同的构造方法构成重载;

package com.Test;

public class test {
    class Fu {
        public Fu(){} //无参的公有构造方法
        public Fu(int i){} //参数类型为int的公有构造方法
    }
    
    public class Demo extends Fu {
        public Demo(){} //无参的公有构造方法
        public Demo(int i){} //参数类型为int的公有构造方法
        public Demo(int i,double d){} //参数类型为int和double的公有构造方法
    }
}

构造方法的使用:
java中构造方法的使用有两个地方,一个是跟在关键字new后面,类名加上一个小括号(),小括号内根据实际加上实参,另外一个是跟在关键字super或this后加上一个小括号(),小括号内根据实际添加实参

    Demo demo = new Demo(); //这里是调用的是一个无参的构造方法,必须声明在方法中,最好声明在主方法
    //上面构造方法的参数根据实际添加实参,jvm根据构造方法的参数不同加载不同的构造方法;
    //2
    public Demo(){
        this(2); //这里调用参数为int类型的本类的构造方法
    }
    //3
    public Demo(){
        super(1); //调用参数为int类型的父类的构造方法
    }

//    注意:2和3中this或super调用构造方法只能出现在构造方法中,而且必须出现在第一行,所以一个构造方法中第一行只能为this或super调用构造方法,两者不能同时调用构造方法出现,而且注意this或super调用构造方法时,要留构造方法出口,意思就是最后调用的构造方法中没有再调用别的构造方法!

构造方法的作用:
1.为了初始化成员属性,而不是初始化对象,初始化对象是通过new关键字实现的
2.通过new调用构造方法初始化对象,编译时根据参数签名来检查构造函数,称为静态联编和编译多态
(参数签名:参数的类型,参数个数和参数顺序)
3.创建子类对象会调用父类构造方法但不会创建父类对象,只是调用父类构造方法初始化父类成员属性;

学习实例和实现

package com.oop.Demo02;

public class Person {
    //一个类即使什么都不写,它也会存在一个方法,这个时候称构造器为隐式构造器

    String name;

    /*
    构造器的作用:
        1.使用new关键字,本质是在调用构造器
        2.实例化初始值


    IDEA中快捷键:alt+insert键,快速创建构造器
     */

    //显式定义构造器
    //无参构造---实例化初始值
//    public Person(){
//        this.name = "cdoudou";
//    }


    //有参构造:一旦定义了有参构造,无参就必须显式定义
//    public Person(String name){
//        this.name = name;
//    }





    //快捷键定义的构造器
//    public Person() {
//    }
//
//    public Person(String name) {
//        this.name = name;
//    }
}


/*
public static void main(String[] args) {
        //实例化了一个对象
        Person person = new Person();
}


    构造器:
        1.和类名相同
        2.没有返回值
    作用:
        1、new本质在调用构造方法
        2、初始化对象的值
    注意点:
        1.定义有参构造之后,如果想要使用无参构造,需要显式的定义一个无参的构造
 */

内存分析

package com.oop.Demo03;

public class Pet {
    public String name;
    public int age;


    public void shout(){
        System.out.println("叫");
    }
}

/*
public static void main(String[] args) {
        Pet dog = new Pet();

        dog.name = "旺财";
        dog.age = 5;
        dog.shout();

        System.out.println(dog.name);
        System.out.println(dog.age);

 */

小结

1.类与对象

  • 类是一个模板,对象是一个具体的实例

2.方法

  • 定义和调用

3.对象的引用

  • 引用类型:基本类型(8)
  • 对象是通过引用来操作:栈----堆

4.属性:字段Field 成员变量

  • 默认初始化:
    数字:0 0.0
    char:u0000
    boolean:false
    引用:null
    修饰符 属性类型 属性名 = 属性值

5.对象的创建和使用

  • 必须使用new 关键字创造对象 构造器 Person doudou = new Person();
  • 对象的属性 doudou.name
  • 对象的方法: doudou.sleep()

6.类:

  • 静态的属性:属性
    动态的行为:方法
加油!!!马上封装、继承和多态了!
posted @ 2020-09-17 20:11  douqing  阅读(114)  评论(0编辑  收藏  举报