zoukankan      html  css  js  c++  java
  • java 05 构造函数-构造代码块

    //构造函数Construct
    ——————————————————————
    类有默认的构造函数.
    public xxx(){
    }
    作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法

    1.构造函数函数名和类同名
    2.不需要定义返回值类型
    3.没有具体的返回值
    4.作用是初始化对象

    1.构造函数为什么没有返回值类型的声明?

        构造函数也是函数,返回的是类型,跟类名称一样,没必要再返回返回值,可以有 return语句

    2.阐述对象创建的过程?

        如下列解释

    3.为什么构造代码块可以访问之后定义的成员变量?

      构造代码块是一个匿名函数,可以访问成员变量,与顺序无关。是在栈中执行。

    4.静态成员和非静态成员的区别?

        静态成员跟类有关,跟对象无关,比如看奔驰的车标,不需要买车。

    5.如何理解this,什么时候用this?

        通过this来访问当前对象,指向自身的指针。

    6.构造函数调用其他函数的方式?

        this();

    类的成员
    ————————————————————————————————————
    1.成员变量
    2.成员函数
    3.构造函数
    4.构造代码块

    对象创建过程
    ————————————————————————————————————
    new Dog();
    1.在内存中分配内存空间
    2.对成员变量赋默认值
    3.执行构造代码块或赋值语句,如果构造代码块有多个,那么按照顺序执行
    5.成员变量赋初始值
    6.构造函数

    static代码块
    _____________________________________________________
    static 跟对象无关,访问的方式是class.xxx()
    静态代码块再类加载过程中调用一次。可以有多个。通常放置对静态成员变量的初始化过程。

     this:指向对象自身的引用,可以看做是类中内置的成员变量

    this():调用其他构造函数的方式,必须作为第一条语句。

    class ConstructDemo{
    public static void main (String[] args ){
    Dog d =new Dog();//调用Dog类的构造函数,返回构造函数的值
    Dog d =new Dog("小白");
    Dog d =new Dog("小白","cv");//有参数的构造函数
    d.watch();
    }

    }


    class Dog{
    //成员变量
    private String name;
    private String color;

    //构造函数,名称跟类同名,构造函数用来创建对象的,
    public Dog(){
    name = n;
    System.out.println("new dog~~~~~~~~");
    }

    //(String n)如有参数那么上面也必须传参数
    public Dog(String n){
    name = n;
    System.out.println("new dog~~~~~~~~");
    }

    //多个构造函数,那么就用重载
    public Dog(String c,String n){
    name = n;
    color = c;
    System.out.println("new dog222~~~~~~~~");
    }


    //方法:成员函数
    public void watch(){
    System.out.println("汪汪汪~~~~");
    }
    }

    构造代码块

    --------------------------------------------------------------------------------------------------------------------------------------------

    class ConstructDemo{
    public static void main (String[] args ){
    //Dog d =new Dog();//调用Dog类的构造函数,返回构造函数的值
    //Dog d =new Dog("小白");
    Dog d =new Dog("小白","cv");//有参数的构造函数
    d.watch();
    }

    }


    class Dog{
    //成员变量
    private String name ="旺财";
    //private String name; 2
    private String color;

    //构造代码块 相当于一个方法 在栈中执行,那么对象要先行存在的 要想在所有的构造函数里面都打印 System.out.println("开始new 狗");
    //跟顺序无关先执行构造代码块

    {
    name = "无名";
    }

    {
    System.out.println("开始new 狗");
    }


    //构造函数,名称跟类同名,构造函数用来创建对象的,
    public Dog(){
    System.out.println("开始new 狗");
    System.out.println("0");
    System.out.println("new dog~~~~~~~~");
    }



    //(String n)如有参数那么上面也必须传参数
    public Dog(String n){
    name = n;
    System.out.println("new dog~~~~~~~~");
    }

    //多个构造函数,那么就用重载

    public Dog(String c,String n){
    System.out.println("new dog222~~~~~~~~"+name);
    }

    /* public Dog(String c,String n){
    name = n;
    color = c;
    System.out.println("new dog222~~~~~~~~"); 2
    } */


    //方法:成员函数
    public void watch(){
    System.out.println("汪汪汪~~~~");
    }


    }

    静态代码块

    ——————————————————————————————————————————————————————

    class ConstructDemo{
    public static void main (String[] args ){
    Dog d =new Dog("小白","cv");//有参数的构造函数
    d.watch();
    //new Dog();
    }

    }


    class Dog{
    //成员变量
    private String color;

    //构造代码块 相当于一个方法 在栈中执行,那么对象要先行存在的 要想在所有的构造函数里面都打印 System.out.println("开始new 狗");
    //跟顺序无关先执行构造代码块

    static{
    System.out.println("static-1");
    }

    static{
    System.out.println("static-2");
    }


    //多个构造函数,那么就用重载

    public Dog(String c,String n){
    System.out.println("new dog222~~~~~~~~"+name);
    }

    //方法:成员函数
    public void watch(){
    System.out.println("汪汪汪~~~~");
    }

    }

  • 相关阅读:
    HTML 图片文字滚动
    Request.QueryString的用法
    细线表格的制作
    photoshop的小小快捷键
    制作首页
    css
    编写BLL层
    完成新闻表操作类
    编写剩下的存储过程
    重构SQLHelper2
  • 原文地址:https://www.cnblogs.com/simly/p/10073017.html
Copyright © 2011-2022 走看看