Java中的构造器

  学习Java,就必须要理解它面向对象的编程思想,但是这个太抽象了,今天就具体说一说Java中的构造器和方法。
  构造器可以提供很多特殊的方法,但是却和方法又有很多不一样的地方。
  理论上讲构造器也是方法的一种,但是就像蝙蝠是哺乳动物,但是和一般的哺乳动物确实有区别的。(ps:好像比如并不恰当)。言归正传,下面具体聊聊。

1.功能上不一样。
构造器是为了创建一个类的实例。也只有在创建一个对象的时候才会调用。
JAVA j=new JAVA();
而方法的作用是为了执行Java代码。
功能上就不一样。
2.写法上的区别
构造器的写法上可以被任何访问的修饰符修饰(public protected private ..)但区别去方法,一下修饰符却不能用于构造器上(abstract,final,native,static).
3返回类型
方法能返回任何类型的值或者无返回值。构造器没有。
4.this的用法
两者之间关于this的用法区别很大,之前初学的时候一直容易弄混淆。
方法引用this指向正在执行方法的类的实例(静态方法除外。因为不属于类的实例)
构造器中的this指向同类中,不同参数列表的另一个构造器。
ex:public class Demo{
String name;
Demo(String args){
name=args;
}
Demo(){
this("jone");
}
public static void main(String args[]){
Demo d1=new Demo("jack");
Demo d2=new Demo();
}
}
上面这个例子职工,有两个不同参数列表的构造器。第一个给类的成员变量赋值,第二个调用第一个构造器。给成员变量一个初始值“jone”.
5 super 的用法
两者用是通过使用super指向超类,但是方法用super是去执行被重载的超类中的方法。
ex: class Demo2{
void getInfo() {
System.out.println("born alive.");
}
}

        class Demo3extends Demo2{
                  void getInfo() {
                    System.out.println("hatch from eggs");
                    System.out.print("a mammal normally is ");
                    super.getInfo();
        }

}
构造器使用super调用超类中的构造器,而且super()必须放在第一行,否则编译不通过。
ex: public class SuperClassDemo {
SuperClassDemo() {}
}
class Child extends SuperClassDemo {
Child() {
super();
}
}
ps:作用就是将超类职工的构造器实例化,加到child类中。
6.构造器不能被继承,但子类的方法却可以继承超类的任何方法。
最后还有一点需要补充,在实际开发中,编译器可以帮我们自动加入代码到构造器中去。当创建一个类,没有写构造器时,编译的时候,会自动加上一个不带参数的构造器。

你可能感兴趣的:(Java中的构造器)