研二
shell
java 构造器与接口,this()
接口interface可用于创建虚拟的类供已有的类继承,但接口中的方法没有实际实现,接口的方法的具体实现是在被继承的对象中完成的。这样的做法可以让子类拥有多个共同的特性,即多重分类:花既可以属于植物也可以属于家庭装饰。
构造器,只有在新建一个类的时候才会调用到构造函数,比如:
Car acar = new car();
这其实就是在调用构造函数。构造函数允许你在使用对象之前就对对象进行一些初始化的设置,比如参数赋值,打印日志等。
任何类都会有构造函数,即使是在没有实际实现的类中。对于没有实现的类,编译器会为你自动编写一个构造函数,但该构造函数不会有参数和实际方法。如果自己想接管编译器完成构造函数,那么就需要实际设计构造函数的功能。
构造函数没有返回值,这是和普通函数不同之处。
编译器除了会在没有编写构造函数的时候自动创建构造函数,而且会自动在没有调用super()的构造函数中自动调用super()这个函数来调用父类的构造函数。由于子类要继承父类的属性和方法,因此如果父类的属性有值的话也会一并传给子类,因此子类在开始继承的时候似乎就“自动”拥有了父类的属性。但看起来的“自动”实际上还是由编译器通过一系列指令来完成的,这种自动化就是super()函数。super函数会放在子类构造函数的第一行,以先完成父类值的赋值,而父类的属性是否会在子类被修改就不归super()管了。
this()函数也只可以用于构造函数,并且会和super()抢夺使用权。this()函数可以调用本类的构造函数,如:
class Car {
Color color;
public car() {
this(Color.red);
}
public car(Color c) {
super();
color = c;
}
}