重修Java—初始化

来源:互联网 发布:淘宝大股东是日本谁 编辑:程序博客网 时间:2024/04/17 02:42

构造器

构造器是一个特殊的方法,用于完成对象初始化的工作,特具有以下特点:
      (1)构造方法的方法名必须与类名相同。
      (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
      (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
      (4)构造方法不能由编程人员调用,而要系统调用。
      (5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构 造器,这个构造器不执行任何代码。 一旦你定义了构造方法,系统默认的就会消失,出于安全,如果你定义了带参的构造方法记得补上无参的构造方法。
      (6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。

方法的重载

      重载方法就是方法名相同,参数的个数、顺序、类型不相同的方法。作用就是根据参数的不同来使用,比方说逛街,我没钱的时候逛街就是逛逛,有钱的时候,我可以买些东西。
      我相信很多人在接触Java的时候都会对重载中为什么不将返回类型也当作重载的一种有过疑问。

    public void f(){        System.out.println("无参的方法");    }    public void f(String str){        System.out.println("无参的方法"+str);    }//  public String f(String str){//      System.out.println("带参的方法"+str);//      return "ceshi";//  }    public static void main(String[] args) {        Demo demo = new Demo();        demo.f("nihao");    }

事实上当你写那样编译器就会抱错,原因呢?假如有两个方法:int f()、void f();这样调用int i = f();编译器根据上下文是完全没问题的,但是如果我们在意的只是这个方法带来某些效果或者副作用,直接f();Java就不知道该怎么调用了,即便是别人恐怕也不知道调用的是哪个吧。

this指针

      不论老师讲过还是我们自己用过都遇见过this关键字。它的作用呢就是指向当前的对象,以获取当前对象的句柄。
      this常用在return语句上,返回当前对象的句柄。也可以用在构造器中使用,调用另一个构造器不过只能调用一次。

static关键字

      static静态的,在类中被标注了static的属性和方法都是类全局性的属性和方法。所以类实例化的对象都共享这一个属性/方法,并且在类被加载的时候初始化。特别注意的是,静态的方法是不能调用非静态方法的,但是对象的普通方法可以调用静态方法。
静态块的概念:

    int n;    static int i;    static String str;    static {        i=1;        str="nihao";    }    {        n=0;    }

第一个是静态块、第二个是普通成员初始化块。
可能还没学到继承但是还是先说下继承下的初始化顺序:
1、不继承情况下
静态成员初始化(静态变量和静态块按顺序初始化)
普通成员初始化(普通变量和初始化块(顺序))
构造函数。
2、有继承的情况下
因为静态变量都是在类加载的时候就初始化。所以顺序是这样的:
继承体系的所有的静态变量和静态块(先父类后子类)
父类的初始化(普通成员初始化->构造函数调用)
子类的初始化(普通成员初始化->构造函数调用)
参考微博

0 0